我正在寻找可以给我以下结果的查询
查找在它们之间没有“$$”的“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
最佳答案
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,"type":"<ALPHANUM>","position":1}]}
请注意,索引不知道 token '$$',这意味着无法查询它(否定或肯定)。
如果该字段的索引映射包含适当的分析器,该分析器会将'$$'作为 token ,则可以在must not中使用简单的短语查询。
关于elasticsearch - Elasticsearch邻近查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58767354/