У меня есть то, что, я считаю, является прецедентом, который хотел бы использовать многие, используя эластичный поиск. Вот мой шаблонЭластичный поиск соответствует точной строке с английским анализатором
PUT _template/test
{
"template" : "test*",
"settings" : {
"number_of_shards" : 5,
"number_of_replicas" : 1
},
"mappings" : {
"test": {
"properties": {
"name": {
"type": "string",
"index": "analyzed"
},
"description": {
"type": "string",
"index": "analyzed",
"analyzer":"english",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
Теперь я собираюсь поставить одну запись в индексе
POST /test/test
{
"name":"test-1",
"description":"on the first day of christmas my true love gave to me a partridge in a pear tree"
}
Теперь представьте, у меня есть миллион этих записей. Что я хочу сделать, так это то, что если я буду искать on the
в поле описания, я бы хотел, чтобы ничего не возвращалось, потому что это обычные слова, о которых должен заботиться английский анализатор. Однако, если я выполняю поиск точного текста "on the"
, тогда мне бы хотелось, чтобы документы возвращались в соответствии с точным текстом.
Мой вопрос к сообществу эластичных, как я могу это разрешить и как должен выглядеть запрос? Я добавил поле .raw для описания, но независимо от того, что моя строка запроса, я не могу получить точный текст, чтобы возвращать любые результаты.
Вы должны запросить его, как GET/тест/тест/_search '{ "запрос": { "термин": { "description.raw": "на" } }}' – Richa
, когда я бегу, что точное запрос Я получаю '{ "взял": 1, "timed_out": ложные, "_shards": { "всего": 5, "успешно": 5, "Failed": 0 }, "хиты": { «общий»: 0, «max_score»: NULL, «хиты»: []} } ' –
Это может быть потому, что у вас нет никакого описания с этим точным текстом – Richa