У меня есть документ с вложенным полем, и у меня возникли некоторые проблемы с получением выделения для работы.Почему я не получаю подсветку, когда мой запрос термина содержит заостренные скобки (<>)?
У нас есть два поля во вложенном отображении, содержащем похожие данные:
"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"
к выделению.