如何突出显示 Elasticsearch 中与字符串匹配的所有值

How to highlight all the values in Elasticsearch which matches the string

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

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>']}}

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

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

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

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

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