我在我的Elasticsearch查询中添加了突出显示,然而,它似乎突出显示了我认为不应该的字段。
这是我的疑问:
{
"from": 0,
"size": 100,
"sort": [
{
"entityName.raw": {
"order": "asc"
}
}
],
"highlight": {
"pre_tags": [
"<span class=\"highlighter\">"
],
"post_tags": [
"</span>"
],
"fields": {
"entityName": {},
"friendlyUrl": {},
"sentBy": {}
},
"require_field_match": true
},
"query": {"bool":{"must":[{"match":{"_all":{"query":"test","operator":"and"}}}]}},
"filter": {
"bool": {
"must": [
{
"term": {
"serviceId": "0b6d064d-1430-4b04-99f7-c30dc03860fc"
}
},
{
"term": {
"subscriptionId": "a29f30e6-f44b-42cc-82c4-f7cb98cb44ef"
}
},
{
"term": {
"subscriptionType": 0
}
},
{
"terms": {
"entityType": [
"4"
]
}
}
]
}
}
}
这是我服务器上的一行添加突出显示:
desc.Highlight(h => h.PreTags("<span class=\"highlighter\">").PostTags("</span>").OnFields(ff => ff.OnField("entityName"), fff => fff.OnField("friendlyUrl"), x => x.OnField("sentBy")));
此查询应找到与john*
字段上的通配符.*
和正则表达式keywords
匹配的任何文档(我需要检查keywords != ""
)。问题是当结果返回时,荧光笔响应会回来,会突出显示文档中的所有内容。
好像正则表达式忽略了我告诉它仅查看keywords
字段而是在所有字段上匹配的事实。如果匹配keywords
,我希望荧光笔只突出显示.*
字段,但它不是......
我做错了什么?
答案 0 :(得分:1)
将"require_field_match": true
添加到荧光笔以强制它在查询的字段上匹配。