我有一个带有嵌套字段的文档,但是在突出显示工作时遇到了一些麻烦。当我的字词查询包含尖括号(<>)时,为什么我没有突出显示?
我们在嵌套映射中有两个包含相似数据的字段:
"value": {
"type": "keyword",
"normalizer": "lowercase"
},
"valueWithQualifier": {
"type": "keyword",
"normalizer": "lowercase"
}
lowercase
规范化器使用过滤器["asciifolding", "lowercase"]
value
通常是字母数字字符串,但是valueWithQualifier
的格式为value<qualifier>
。当我在value
字段上执行术语查询时,通常会返回突出显示信息。当我在valueWithQualifier
字段上执行字词查询时,我永远都不会得到突出显示的信息。
{
"query": {
"nested": {
"path": "assoc",
"query": {
"term": {
"assoc.value": "123abc"
}
},
"inner_hits": {
"highlight": {
"fields": {
"assoc.value*": {}
}
}
}
}
}
}
这将返回带有高亮显示的内部匹配:
"highlight": {
"assoc.value": [
"<em>123abc</em>"
]
}
但是,此查询返回inner_hit,但不突出显示:
{
"query": {
"nested": {
"path": "assoc",
"query": {
"term": {
"assoc.valueWithQualifier": "123abc<qual>"
}
},
"inner_hits": {
"highlight": {
"fields": {
"assoc.value*": {}
}
}
}
}
}
}
但是,这确实会返回突出显示(但出于效率考虑,我宁愿使用术语查询):
{
"query": {
"nested": {
"path": "assoc",
"query": {
"prefix": {
"assoc.valueWithQualifier": "123abc"
}
},
"inner_hits": {
"highlight": {
"fields": {
"assoc.value*": {}
}
}
}
}
}
}
"highlight": {
"assoc.valueWithQualifier": [
"<em>123abc<qual></em>"
]
}
在有人问之前,我尝试将"encoder": "html"
添加到突出显示中。