我想知道somone是否已尝试或建议将单个字段与多个查询字符串匹配的最佳方法。最简单的解释方法是说我想在mysql中执行相当于WHERE name = "jeff" OR name = "thomas" OR name = "harry"
的操作,但将其翻译为elasticsearch匹配查询。
我希望结果能够自己处理每个查询条件,忽略其他查询返回的内容。
有效这是这个查询
{
"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的得分似乎与query:{match:{}}
得分完全不同。
在一天结束时,我想要编写一个尝试匹配查询字符串的查询,但也尝试使用字符串的多个变体和缩写替换,例如where name="company ltd" OR name="company limited"
,其他条件无关紧要。
问题摘要
有没有人遇到过更好的查询方法来运行具有多个条件的查询,其中每个条件都独立于另一个条件并相应地返回结果和分数?
如果没有其他内容出现,我可能会使用dis_match查询类型。
答案 0 :(得分:0)
最后,我能保证在同一请求中进行独立搜索的唯一方法是使用多搜索API端点并将响应粘贴到一个结果数组中