Elasticsearch邻近查询

我正在寻找可以给我以下结果的查询

找到在它们之间没有“ $$”的“ A”和“ B”

例如

doc1:“ A $$ B C D”

doc2:“ B $$ A C D”

doc3:“ A B $$ C D”

doc4:“ A C D B $$”

ans应该是doc3和doc4

wsydy2006 回答:Elasticsearch邻近查询

Elasticsearch以反向索引分析文本和索引。因此,关键是要知道如何对数据建立索引以了解如何查询数据(应该以查询的方式对数据建立索引)。

考虑使用标准分析器为上述文本建立索引的场景,这是默认设置(Elasticsearch提供_analyze API来测试如何分析数据)

 curl http://localhost:9200/sampleindex/_analyze?tokenizer=whitespace&filters=lowercase -d ' { "text" : "ab $$ cc","analyzer": "standard" } ' 

 {"tokens":[{"token":"ab","start_offset":0,"end_offset":2,"type":"<ALPHANUM>","position":0},{"token":"cc","start_offset":6,"end_offset":8,"position":1}]}

请注意,索引不了解令牌'$$',这意味着无法查询它(否定或肯定)。

如果该字段的索引映射包含适当的分析器,该分析器会将'$$'作为令牌,那么您可以使用一个简单的短语查询,且不得包含。

本文链接:https://www.f2er.com/3137666.html

大家都在问