【问题标题】:Multiple elasticsearch match queries多个 elasticsearch 匹配查询
【发布时间】:2019-01-19 21:03:32
【问题描述】:
假设我有一个包含 3 个文本字段的文档:field_a、field_b 和 field_c。
是否可以进行单个查询,以便我们按此顺序获得结果:
- field_a 中的“匹配”
- field_b 中的“匹配”
- field_c 中的“匹配”
'mutli_match' 结果可以将来自不同字段的结果按结果顺序混合在一起,我想要的是来自 field_a 的任何和所有结果,然后是来自 field_b 的任何和所有结果等等。
【问题讨论】:
标签:
elasticsearch
elasticsearch-6
【解决方案1】:
尽管我觉得这种方法总体上很奇怪(我认为您遇到的问题应该以不同的方式解决,例如多个搜索阶段),但我认为您现在可以通过以下方式解决它。
多重匹配查询具有完美的provide boost 到您的字段的能力。例如
"query": {
"multi_match" : {
"query" : "this is a test",
"fields" : [ "field_a^1000", "field_b^10", "field_c" ]
}
}
符号^ 是一个提升符号,它会将该字段中的匹配分数乘以值 - 在field_a 的情况下为 1000
但是,我建议一般避免这种行为,因为: