首页 > 解决方案 > 如何突出显示 Elasticsearch 中与字符串匹配的所有值

问题描述

下面是示例查询以突出显示所有字段

resp = es.search(index="test", body={"from": 0, "size": 1000, "query": {"bool": {"must": {"query_string": {"query": "Pencil" + '*', "fields": ["name^24"]}}}}, "highlight": { "fields": { "*": {}}}})

我终于得到如下输出

{'highlight': {'name': ['<em>Pencil</em>']}}

我在标题,描述的很多地方都有“铅笔”。有没有办法在检索时在所有地方都“铅笔”。

基本上铅笔在哪里来,我需要确定它,它有点突出

标签: elasticsearchdsl

解决方案


因为您已将匹配字段指定为nameie,所以"fields": ["name"]您的突出显示将仅返回名称字段,如果您想在所有字段"require_field_match": false中突出显示,请添加突出显示查询。

您的突出显示查询必须如下所示

"highlight" : {
    "require_field_match": false,
    "fields": {
      "*" : {}
    }
  }

推荐阅读