如何查找所有带有通配符的文档,单词之间接连出现。例如,我有两个文档:
{"text": "people in Ukraine elected a new president"}
{"text": "Ukrainians chose a new president"}
我尝试使用通配符搜索并使用斜距引用,并使用query_string:
{
"_source": ["_id", "text"],
"query": {
"query_string": {
"query": '"ukrain* president*"~3',
"analyze_wildcard": True
}
}
}
但是弹性返回空击。
我使用standard
分析器删除了停用词,没有词干,因为我也想按精确值进行搜索。
答案 0 :(得分:0)
我在这里看到的问题与分析仪有关。您正在使用standard analyzer。
因此,此分析器会将您的字符串people in Ukraine elected a new president
分成7个不同的词,即people
,in
,Ukraine
,依此类推。
现在,什么时候尝试搜索通配符ukrain* president*
,这与在Elasticsearch中存储为反向索引的任何分析词都不匹配。
此外,我看到您正在使用query_string
搜索正则表达式,这是错误的方法。为此,Elasticsearch具有wildcard
query。