elasticsearch 我是ES的新成员,在ES中有多个匹配查询,并且希望根据其可用性考虑字段。 有一个字段,即代码> EddieToDebug < /C>,如果在文档中>代码> EddiDeX描述存在于文档中,则考虑 EddieTyDebug .ReGeXType ^ 1 否则考虑描述,即描述.ReGeXType ^ 1 .< /P> 不能定义多匹配查询中的IF条件。但你能做的是用另一种方式重新审视你的问题陈述。我可以将其重新视为,如果edited\u description和description都存在,那么edited\u description字段中的匹配项应该被赋予更高的优先级,elasticsearch,elasticsearch" /> elasticsearch 我是ES的新成员,在ES中有多个匹配查询,并且希望根据其可用性考虑字段。 有一个字段,即代码> EddieToDebug < /C>,如果在文档中>代码> EddiDeX描述存在于文档中,则考虑 EddieTyDebug .ReGeXType ^ 1 否则考虑描述,即描述.ReGeXType ^ 1 .< /P> 不能定义多匹配查询中的IF条件。但你能做的是用另一种方式重新审视你的问题陈述。我可以将其重新视为,如果edited\u description和description都存在,那么edited\u description字段中的匹配项应该被赋予更高的优先级,elasticsearch,elasticsearch" />

elasticsearch 我是ES的新成员,在ES中有多个匹配查询,并且希望根据其可用性考虑字段。 有一个字段,即代码> EddieToDebug < /C>,如果在文档中>代码> EddiDeX描述存在于文档中,则考虑 EddieTyDebug .ReGeXType ^ 1 否则考虑描述,即描述.ReGeXType ^ 1 .< /P> 不能定义多匹配查询中的IF条件。但你能做的是用另一种方式重新审视你的问题陈述。我可以将其重新视为,如果edited\u description和description都存在,那么edited\u description字段中的匹配项应该被赋予更高的优先级

elasticsearch 我是ES的新成员,在ES中有多个匹配查询,并且希望根据其可用性考虑字段。 有一个字段,即代码> EddieToDebug < /C>,如果在文档中>代码> EddiDeX描述存在于文档中,则考虑 EddieTyDebug .ReGeXType ^ 1 否则考虑描述,即描述.ReGeXType ^ 1 .< /P> 不能定义多匹配查询中的IF条件。但你能做的是用另一种方式重新审视你的问题陈述。我可以将其重新视为,如果edited\u description和description都存在,那么edited\u description字段中的匹配项应该被赋予更高的优先级,elasticsearch,elasticsearch,这可以通过为edited_description字段设置稍高的增压值来实现 { "multi_match": { "query": "TEST", "fields": [ "description.regexkeyword^1.0", "logical_name.regexkeyword^1.0", "logical_table_name.regexkeyword^1.0", "physical_na

这可以通过为
edited_description
字段设置稍高的增压值来实现

{
    "multi_match": {
      "query": "TEST",
      "fields": [
        "description.regexkeyword^1.0",
        "logical_name.regexkeyword^1.0",
        "logical_table_name.regexkeyword^1.0",
        "physical_name.regexkeyword^1.0",
        "presentation_name.regexkeyword^1.0",
        "table_name.regexkeyword^1.0"
      ],
      "type": "best_fields",
      "operator": "AND",
      "slop": 0,
      "prefix_length": 0,
      "max_expansions": 50,
      "lenient": false,
      "zero_terms_query": "NONE",
      "boost": 1
    }
  }

这将导致在
edited_description
中匹配的文档排名更高。您可以根据需要调整提升值。

您不能在多匹配查询中定义if条件。但你能做的是用另一种方式重新审视你的问题陈述。我可以将其重新视为,如果
edited\u description
description
都存在,那么
edited\u description
字段中的匹配项应该被赋予更高的优先级

这可以通过为
edited_description
字段设置稍高的增压值来实现

{
    "multi_match": {
      "query": "TEST",
      "fields": [
        "description.regexkeyword^1.0",
        "logical_name.regexkeyword^1.0",
        "logical_table_name.regexkeyword^1.0",
        "physical_name.regexkeyword^1.0",
        "presentation_name.regexkeyword^1.0",
        "table_name.regexkeyword^1.0"
      ],
      "type": "best_fields",
      "operator": "AND",
      "slop": 0,
      "prefix_length": 0,
      "max_expansions": 50,
      "lenient": false,
      "zero_terms_query": "NONE",
      "boost": 1
    }
  }

这将导致在
edited_description
中匹配的文档排名更高。您可以根据需要调整提升值。

谢谢@Opster ES Ninja Nishant,假设我正在基于文本“abc”进行搜索,字段编辑的描述和描述都可用,但编辑的描述值为“xyz”,描述值为“abc”,在这种情况下,文档不应出现在结果中。我们如何才能做到这一点,因为描述字段对我来说已经过时了。我必须考虑在EddieTyDead中总是有搜索,如果它是可用的,我觉得在索引时间可以更好地处理。每当您将值索引到
编辑的\u描述
索引
描述
字段时。这将始终导致一个字段中的匹配,即,如果文档已更新,则在
编辑的\u描述
中匹配;如果文档未使用
编辑的\u描述
更新,则在
描述
中匹配。描述字段类似于字段的首次输入值,编辑的\u描述是对字段的后续更改。所以我不能将description字段设为null,因为我还必须跟踪输入的第一个值。还有其他方法可以实现吗?谢谢@Opster ES Ninja Nishant,假设我正在基于文本“abc”进行搜索,字段编辑的描述和描述都可用,但编辑的描述值为“xyz”,描述值为“abc”,在这种情况下,文档不应出现在结果中。我们如何才能做到这一点,因为描述字段对我来说已经过时了。我必须考虑在EddieTyDead中总是有搜索,如果它是可用的,我觉得在索引时间可以更好地处理。每当您将值索引到
编辑的\u描述
索引
描述
字段时。这将始终导致一个字段中的匹配,即,如果文档已更新,则在
编辑的\u描述
中匹配;如果文档未使用
编辑的\u描述
更新,则在
描述
中匹配。描述字段类似于字段的首次输入值,编辑的\u描述是对字段的后续更改。所以我不能将description字段设为null,因为我还必须跟踪输入的第一个值。我还有别的办法吗。