Я хотел бы создать индекс, который содержит поле с именем "home_city". Мне нужно будет выполнить поиск по этому индексу, который возвращает все документы с полем home_city, которое в точности совпадает с «Литл-Рок». Мне также нужно будет выполнить поиск по этому индексу, который возвращает все документы с полем home_city, которое содержит любые слова со строкой запроса в качестве префикса. Например, если строка запроса "Ne", то в результате будут получены документы с home_city = "New York" или home_city = "Long Neck" или home_city = "Nevinton".
Я могу создать Индекс, который разрешает любой из этих двух запросов, но не оба.
Например, прежний поиск (точный полный поиск по ключевому слову) работает, если я указываю индексу использовать анализатор Ewordti c «ключевое слово» , Я указываю это при создании индекса следующим образом ...
PUT my_index
{
"mappings":{
"properties":{
"home_city": {
"type":"text",
"analyzer":"keyword",
}
}
}
}
Следующий запрос корректно возвращает все документы с полем home_city = "Little Rock"
{
"query": {
"bool": {
"must": [
{
"query_string":{
"query":"Little Rock"
}
}]
}
}
}
Также, как и ожидалось, если запрос не является «Little Rock», а «Little» или «Rock», тогда ответ не включает документы с home_city = «Little Rock». Хорошо, это то, что мы хотим.
Последний (сопоставление префиксов) работает, если я создаю индекс с настройками по умолчанию. Запрос выглядит следующим образом ...
{
"query": {
"match": {
"home_city": "Di"
}
}
}
возвращает документы с полем home_city = "San D iego" и документы с полем home_city = "Diamondville".
Однако Я не могу заставить оба этих запроса работать с одним и тем же индексом. Если при создании индекса я укажу анализатор ключевых слов и выполню второй запрос (запрос на сопоставление префиксов), то ни один документ не совпадет.
Как создать индексную шапку, которая будет работать с запросами, которые точно ищут документы сопоставление всей строки запроса И запросы, которые ищут документы, содержащие запрос в качестве префиксов.
В конечном счете, мы заинтересованы в замене сопоставления префикса более сложным сопоставлением, которое включает сопоставление префикса, а также другие методы. Но сейчас мы хотели бы просто выяснить проблему, описанную выше.
Cheers.