我正在寻找可以给我以下结果的查询
找到在它们之间没有“ $$”的“ 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
我正在寻找可以给我以下结果的查询
找到在它们之间没有“ $$”的“ 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,"position":1}]}
请注意,索引不了解令牌'$$',这意味着无法查询它(否定或肯定)。
如果该字段的索引映射包含适当的分析器,该分析器会将'$$'作为令牌,那么您可以使用一个简单的短语查询,且不得包含。