如何突出显示 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": {
"*" : {}
}
}
下面是突出显示所有字段的示例查询
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": {
"*" : {}
}
}