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

时间:2021-01-05 10:44:23

标签: elasticsearch dsl

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

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

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

基本上铅笔出现的地方,我需要确定,它有点突出

1 个答案:

答案 0 :(得分:0)

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

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

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