эластичный поиск точное совпадение фраз

Я новичок в ЕС. У меня возникли проблемы с поиском точных совпадений фраз.

Предположим, что в моем индексе есть поле с именем movie_name. Предположим, у меня есть 3 документа со следующими значениями

  1. movie_name = Безумный Макс
  2. movie_name = Безумный Макс
  3. movie_name = Безумный Макс 3D

Если мой поисковый запрос «Безумный Макс», я хочу, чтобы были возвращены первые 2 документа, но не 3-й.

Если я сделаю решение «not_analyzed», я получу только документ 1, но не 2.

Что мне не хватает?


person userab12345    schedule 20.05.2015    source источник


Ответы (2)


Я смог сделать это с помощью следующих команд, в основном создайте собственный анализатор, используйте ключевое слово tokenizer для предотвращения токенизации. Затем используйте анализатор в «сопоставлениях» для нужного поля, в данном случае «имя_фильма».


        PUT /movie
        {
      "settings":{
         "index":{
            "analysis":{
               "analyzer":{
                  "keylower":{
                     "tokenizer":"keyword",
                     "filter":"lowercase"
                  }
               }
            }
         }
      },
        "mappings" : {
            "search" : {
                "properties" : {
                    "movie_name" : { "type" : "string", "analyzer":"keylower" }
                }
            }
        }
    }

person userab12345    schedule 21.05.2015

Используйте фразовое соответствие следующим образом:

{
"query": {
    "match_phrase": {
        "movie_name": "a"
    }
}
}
person Master Mind    schedule 20.05.2015
comment
Я пробовал это, но это все равно возвращает Безумный Макс 3D. Как говорится в документации, но сохраняются только документы, содержащие все условия поиска, в моем случае оба условия найдены в Mad Max 3D. - person userab12345; 21.05.2015
comment
является ли movie_name анализируемым полем? потому что тот факт, что запрос должен соответствовать верхнему и нижнему регистру, можно решить, проанализировав поле - person Master Mind; 21.05.2015
comment
Применяете ли вы в своем анализаторе анализатор нижнего регистра? - person Master Mind; 21.05.2015