Я пытаюсь настроить индекс ElasticSearch с различными анализаторами для отдельных полей.Тем не менее, я не могу найти способ установить специфичные для поля анализаторы;вот как я создаю свой (тестовый) индекс:
curl -XPOST localhost:9200/twitter
curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '
{
"tweet" : {
"properties" : {
"message" : {
"type" : "string",
"search_analyzer" : "snowball",
"index_analyzer" : "snowball"
}
}
}
}'
Если я правильно прочитал документацию, то это должно создать индекс 'twitter' с типом 'tweet' и содержимое для поля 'message'следует анализировать с помощью анализатора стволовых снежного кома.Чтобы проверить это, я попробовал следующие запросы:
curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
"message" : "Look, a fighting War-Unicorn!"
}'
curl -XGET localhost:9200/twitter/_search?q=fight
Если я не ошибаюсь, это должно вернуть удар, так как бой - основа для боя;проблема в том, что нет, я получаю ноль хитов.Похоже, что ElasticSearch полностью игнорирует сопоставление (даже если ElasticSearch принимает все эти запросы, поскольку я получаю 'ok' для каждого из них.)
Я уже пытался заменить анализатор по умолчанию на снежный команализатор, и тогда он работает;Дело в том, что мне совершенно необходимы специальные анализаторы, поэтому это мне не поможет.Я также пробовал разные анализаторы и такие вещи, как установка «index» на «no», но безрезультатно.
Что я делаю не так?