我想知道如果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查询类型。