繁体   English   中英

在 ElasticSearch 中赋予文档字段不同的优先级

[英]Give document fields different priority in ElasticSearch

我有数据:

{"NAME": "BRIDGE CAMBODJA", "NAME": "CAMBRIDGE APARTMENTS", "NAME":"KULAMAN BRIDGE"}

我有以下查询:

'{"query": {"query_string": {"query": "BRIDGE"}'

我想要出现的是:

{"NAME": "BRIDGE CAMBODJA", "NAME": "KULAMAN BRIDGE", "NAME": "CAMBRIDGE APARTMENTS"}

如何修改我的搜索以设置字段排名/优先级?

您可以通过直接在查询中使用boost 参数并查询以BRIDGE开头、以BRIDGE结尾或包含BRIDGENAME来实现所需的结果。

添加一个工作示例

索引映射:

{
  "mappings": {
    "properties": {
      "NAME": {
        "type": "keyword"
      }
    }
  }
}

搜索查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "default_field": "NAME",
            "query": "BRIDGE*",
            "boost": 10
          }
        },
        {
          "query_string": {
            "default_field": "NAME",
            "query": "*BRIDGE",
            "boost": 5
          }
        },
        {
          "query_string": {
            "default_field": "NAME",
            "query": "*BRIDGE*",
            "boost": 1
          }
        }
      ]
    }
  }
}

搜索结果:

"hits": [
      {
        "_index": "66095448",
        "_type": "_doc",
        "_id": "1",
        "_score": 11.0,
        "_source": {
          "NAME": "BRIDGE CAMBODJA"
        }
      },
      {
        "_index": "66095448",
        "_type": "_doc",
        "_id": "3",
        "_score": 6.0,
        "_source": {
          "NAME": "KULAMAN BRIDGE"
        }
      },
      {
        "_index": "66095448",
        "_type": "_doc",
        "_id": "2",
        "_score": 1.0,
        "_source": {
          "NAME": "CAMBRIDGE APARTMENTS"
        }
      }
    ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM