多个elasticsearch匹配查询

Multiple elasticsearch match queries

假设我有一个包含 3 个文本字段的文档:field_a、field_b 和 field_c。 是否可以进行一次查询,以便我们按以下顺序获得结果:

  1. 'match' 在 field_a
  2. 'match' 在 field_b
  3. 'match' 在 field_c

'mutli_match' 结果可以将来自不同字段的结果按结果顺序混合在一起,我想要的是来自 field_a 的任何和所有结果,然后来自 [=27] 的任何和所有结果=] 等等。

尽管如此,我总的来说觉得这种方法很奇怪(我认为你遇到的问题应该以不同的方式解决,例如多阶段搜索),我认为你现在可以通过以下方式解决它。

多匹配查询可以完美provide boost到您的字段。例如

"query": {
    "multi_match" : {
      "query" : "this is a test",
      "fields" : [ "field_a^1000", "field_b^10", "field_c" ] 
    }
  }

符号 ^ 是一个增强符号,它会将此字段中的匹配分数乘以值 - 在 field_a

的情况下为 1000

但是,我建议一般情况下避免这种行为,因为:

  • 很难控制这些提升值
  • 在某些情况下,它的表现可能不如预期(假设您在 field_b 中获得 1000 分)

  • 如果你有很多点击,这使得匹配 field_c 的整个想法有点过时,因为没有用户会在搜索结果中滚动那么远