【问题标题】:Multiple elasticsearch match queries多个 elasticsearch 匹配查询
【发布时间】:2019-01-19 21:03:32
【问题描述】:

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

  1. field_a 中的“匹配”
  2. field_b 中的“匹配”
  3. 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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多