elasticsearch - 我是ES新手,在ES中有一个多匹配查询,并且想根据其可用性考虑字段

标签 elasticsearch

{
    "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,如果万一文档中有edited_description exists,则考虑edited_description.regexkeyword^1.0,否则请考虑描述,即description.regexkeyword^1.0

最佳答案

您无法在multi_match查询中定义if条件。但是,您可以做的是用另一种方式重新查看问题陈述。我可以重新看一下,如果edited_descriptiondescription都存在,则edited_description字段中的匹配项应被赋予更高的优先级。

这可以通过为edited_description字段设置更高的提升值来实现。

{
  "multi_match": {
    "query": "TEST",
    "fields": [
      "description.regexkeyword^1.0",
      "edited_description.regexkeyword^1.2",
      "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中具有匹配项的文档排名更高。您可以根据需要调整提升值。

关于elasticsearch - 我是ES新手,在ES中有一个多匹配查询,并且想根据其可用性考虑字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61878527/

相关文章:

mysql - 从mysql解析数据到elasticsearch时会报错

elasticsearch - 无法在 Elasticsearch 中创建映射和添加数据

elasticsearch - 如何查询所有文档都具有的字段值?

elasticsearch - elasticsearch default_field vs字段的结果不同

search - 带有过滤器的elasticsearch中的多词查询

elasticsearch - 适用于不同日期的查询

ruby-on-rails - Rails 4:在ElasticSearch索引上从Wysiwyg编辑器清除文本

elasticsearch - nutch 爬网脚本中的自定义选项不起作用

elasticsearch - 在Elasticsearch中排序聚合?

elasticsearch - ElasticSearch:对所有字段使用match_phrase