Я не думаю, что можно сделатьasticsearch возвращать точно n слов вокруг соответствия, но вы можете использовать функцию выделения, чтобы получить грубый контекст и затем обработать результат в вашем приложении. .
По умолчаниюasticsearch пытается определить, из какого контекста получается хороший фрагмент кода, поэтому вам, возможно, придется увеличить размер этого окна, установив fragment_size
(количество символов в возвращаемом фрагменте).
Вот пример запроса:
{
"query": {
"match": {
"yourtextfield": "hill"
}
},
"highlight": {
"fields": {
"yourtextfield": {}
},
"boundary_scanner": "word",
"type": "plain",
"fragment_size": 150,
"pre_tags": "",
"post_tags": ""
}
}
Обычно совпадения заключены в <em>
и </em>
, но вы можете изменить или удалить их с помощью pre_tags
и post_tags
. Возможно, было бы полезно использовать их в качестве маркеров, чтобы вы знали, какое слово точно соответствует вашему запросу.
Пожалуйста, посмотрите также документацию , есть много хороших примеров, которые могут вам помочь.