使用双引号搜索关键字以获得elasticsearch中的完全匹配

时间:2014-07-17 05:55:34

标签: elasticsearch

如果用户通过在"花和覆盖物"等关键字周围添加引号进行搜索然后应显示完全匹配。

我尝试使用query_string,它几乎可以工作,但对这些结果不满意。

任何人都可以帮帮我。

{
    "query": {
        "query_string": {
           "fields": ["body"], 
           "query": "\"flowers and mulch\""
        }
    }
}

2 个答案:

答案 0 :(得分:4)

你应该使用phrase_match来完成短语匹配:

{
    "query": {
        "match_phrase": {
            "body": "flowers and mulch"
        }
    }
}
  

词组匹配

     

与匹配查询是标准的“转到”查询的方式相同   全文搜索,match_phrase查询是您应该达到的   当你想要找到彼此接近的单词时。

http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/phrase-matching.html

答案 1 :(得分:1)

当我提出问题的评论时,我认为知道OP发现不满足query_string的内容会很棒。我建议在这些情况下使用query_string。请注意,可以设置多个选项,例如:auto_generate_phrase_queriessplit_on_whitespacequote_field_suffix(例如:here),这使得它非常通用。

可以使用one "two three"

的默认参数来解决案例query_string