在ElasticSearch中是否有可能形成可以保留术语顺序的查询?
一个简单的例子是使用标准分析器为这些文档建立索引:
我可以查询+you +search,这将返回所有文档,包括第三个文档。
+you +search
如果我只想检索按此特定顺序排列有术语的文档怎么办?我可以构成一个查询吗?
考虑到仅通过引用文本即可获得短语:("you know"检索第一和第二文档)在我看来,应该有一种方法可以保留不相邻的多个术语的顺序。
"you know"
在上面的简单示例中,我可以使用邻近搜索,但这并不涵盖更复杂的情况。
您可以使用span_near查询,它具有一个in_order参数。
span_near
in_order
{ "query": { "span_near": { "clauses": [ { "span_term": { "field": "you" } }, { "span_term": { "field": "search" } } ], "slop": 2, "in_order": true } } }