При использовании List<String>
в Elasticsearch для хранения данных, если вы хотите получить выделенные результаты при выполнении запроса, вам следует использовать функцию highlight
.
Для получения эффекта, такого как ["<em>Иван</em> Петров", "Сидоров Петр", "Антонов Василий"]
, можно воспользоваться следующими шагами:
Убедитесь, что поле, которое вы хотите выделить, было создано с типом text
и имеет настройку fielddata=true
.
При создании запроса используйте параметр highlight
и выберите подходящий метод выделения. Например, для использования метода match
:
{
"query": {
"bool": {
"must": [
{ "match": { "xxx": "искомое значение" } }
]
}
},
"highlight": {
"fields": {
"xxx": {}
},
"require_field_match": false,
"fragment_size": 100,
"number_of_fragments": 1,
"type": "unified"
}
}
Здесь "xxx"
— это имя поля, которое вы хотите выделить. В результате запроса Elasticsearch вернет вам данные вместе с метками <em>
и </em>
, которые будут указывать на найденные совпадения.
Обратите внимание, что использование fielddata=true
может потребовать значительных системных ресурсов, особенно если ваше поле большое. Поэтому рекомендуется использовать этот параметр только тогда, когда это действительно необходимо.