http://www.elasticsearch.org/guide/en/elasticsearch/client/community/current/health.html
аюсь настроить индекс 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"
}
}
}
}'
Если я правильно прочитал документацию, то это должно создать индекс «твиттер» с типом «твит», а контент для поля «сообщение» должен быть проанализирован с помощью анализатора стеблей снежного кома. Чтобы проверить это, я попробовал следующие запросы:
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 принимает все эти запросы, так как я получаю «ок» для каждого из них).
Я уже пытался заменить анализатор по умолчанию на анализатор снежного кома, и тогда он работает; Дело в том, что мне совершенно необходимы специальные анализаторы, поэтому это мне не поможет. Я также пробовал разные анализаторы и такие вещи, как установка «index» на «no», но безрезультатно.
Что я делаю неправильно?