如何在Elasticsearch中使用通配符搜索连续单词的文档

时间:2019-05-16 14:24:32

标签: python-3.x elasticsearch

如何查找所有带有通配符的文档,单词之间接连出现。例如,我有两个文档:

{"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分析器删除了停用词,没有词干,因为我也想按精确值进行搜索。

1 个答案:

答案 0 :(得分:0)

我在这里看到的问题与分析仪有关。您正在使用standard analyzer

因此,此分析器会将您的字符串people in Ukraine elected a new president分成7个不同的词,即peopleinUkraine,依此类推。 现在,什么时候尝试搜索通配符ukrain* president*,这与在Elasticsearch中存储为反向索引的任何分析词都不匹配。

此外,我看到您正在使用query_string搜索正则表达式,这是错误的方法。为此,Elasticsearch具有wildcard query