2016-08-01 61 views
0

我想知道如果somone试图或建议最佳方式来匹配单个字段与多个查询字符串。解释这个最简单的方法是说我想在mysql中执行相当于WHERE name = "jeff" OR name = "thomas" OR name = "harry"的操作,但将其转换为elasticsearch匹配查询。Elasticsearch 2.2查询测试对同一字段的查询字符串数

我想结果采取每个查询条件自己忽略其他查询返回的内容。

有效正是这种查询

{ 
    "query": { 
       { "match": { "title": "Brown fox" }} 
    } 
} 

但随着添加额外的匹配查询的能力。我可以运行多个查询,但我认为它会更有效率(并希望)将它作为一个查询运行。

我曾尝试:

{ 
    "query": { 
     "bool": { 
      "should": [ 
       { "match": { "title": "Brown fox" }}, 
       { "match": { "body": "Brown fox" }} 
      ] 
     } 
    } 
} 

但得分是基于对所有查询匹配的影响。理想情况下,我希望得分仅基于单个查询。

的dis_max查询

https://www.elastic.co/guide/en/elasticsearch/guide/current/_best_fields.html#dis-max-query

似乎是最接近于什么我'之后,但得分仍然似乎是由从dis_match其他queries.The成绩似乎受到影响与query:{match:{}}得分完全不同。

在一天结束时,我想编写一个试图匹配查询字符串的查询,但也尝试一些字符串的变体和缩写替换,例如where name="company ltd" OR name="company limited",其他条件无关紧要。

问题总结

有没有人碰到与多个条件运行查询更好的查询方法,每个条件是独立的另一个并返回结果和相应的分数?

如果没有其他出现,我可能会使用dis_match查询类型。

回答