在ElasticSearch查询中保留术语的顺序

在ElasticSearch中是否有可能形成可以保留术语顺序的查询?

一个简单的例子是使用标准分析器为这些文档建立索引:

  1. 你知道要搜索
  2. 你知道搜索
  3. 知道为您搜寻

我可以查询+you +search,这将返回所有文档,包括第三个文档。

如果我只想检索按此特定顺序排列有术语的文档怎么办?我可以构成一个查询吗?

考虑到仅通过引用文本即可获得短语:("you know"检索第一和第二文档)在我看来,应该有一种方法可以保留不相邻的多个术语的顺序。

在上面的简单示例中,我可以使用邻近搜索,但这并不涵盖更复杂的情况。

回答:

您可以使用span_near查询,它具有一个in_order参数。

{

"query": {

"span_near": {

"clauses": [

{

"span_term": {

"field": "you"

}

},

{

"span_term": {

"field": "search"

}

}

],

"slop": 2,

"in_order": true

}

}

}

以上是 在ElasticSearch查询中保留术语的顺序 的全部内容, 来源链接: utcz.com/qa/400785.html

回到顶部