当前位置: 首页 > 知识库问答 >
问题:

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

仉昱
2023-03-14

我有数据:

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

我有以下疑问:

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

我想要出现的是:

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

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

共有1个答案

秦学林
2023-03-14

通过在查询中直接使用boost参数,并查询以桥开头、以桥结尾或包含桥的名称,可以获得所需的结果。

添加工作示例

索引映射:

{
  "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"
        }
      }
    ]
 类似资料:
  • 我有以下疑问: 这将搜索给定索引\type ex中的所有字段。Mytype具有字段1、字段2、字段3这将“ABC”与字段1、字段2、字段3匹配 在3个字段上设置了相等的值,我需要对字段排名进行优先级排序,所以让我们假设优先级应该是field2、field3、field1 如何修改搜索以设置字段排名/优先级? 在我的研究中,我看到了_分数,但这看起来像是用来对每个文档而不是字段进行优先级排序的。

  • 问题内容: 我有一个像这样的元素: 我想给它的CSS类更大的优先级,而不是它的CSS ID。可能吗? (换句话说,我想将-color 设置为其) 问题答案: 不要使用,因为这是最糟糕的解决方案,如果您要切换样式,请按照这种方式进行操作。 如果您还想使用该类来定位其他元素,则不仅要 使用,还可以使用:

  • 我创建了一个包含标题字段和文本字段的文档弹性搜索索引。给定一个查询,我的搜索的期望行为是首先检查title字段,如果有任何文档的标题与查询“良好”匹配,那么这些文档必须排在前面。只有在良好的标题匹配之后,才应该返回具有良好文本匹配的文档。 通过“良好的标题匹配”,我的意思是类似于“查询接近标题的某个子集,其中接近意味着levinshtein距离小于某个给定数字”。这是一个阈值条件。因此,标题要么是

  • 我只需要在文档中的三个字段中搜索一个术语,并根据搜索术语的位置对结果进行排序。例如,找到3个文档:1个在字段2中有搜索词,2个在字段3中有搜索词,3个在字段1中有搜索词。 我想按顺序看:3、1、2。 我以为我可以用助推来做。现在我使用以下方法: 然而,它似乎是,如果我有一个文档与4个词等于搜索词在字段2和另一个文档与1个词在字段1,比后者将有一个较小的分数。 我看到的一个解决方案是为field1和

  • 在elasticsearch文档中有多级字段好吗? 如果是,如何搜索带有嵌套字段的文档 我没有看到关于elasticsearch docshttps的文档://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 多级I表示嵌套字段

  • 问题内容: 我需要在所有索引到Elasticsearch的文档中删除一个字段。我该怎么做。任何删除查询都可以帮助我实现这一点。 问题答案: @backtrack所说的是对的,但是在Elasticsearch中有一种非常方便的方法。Elasticsearch将抽象出删除的内部复杂性。您需要使用更新API来实现- 您可以在此处找到更多文档。 注意:从Elastic Search 6开始,您需要包括一个