Сопоставление ElasticSearch не работает

Я пытаюсь настроить индекс 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 принимает все эти запросы, поскольку я получаю ответ «ОК» для каждого из них).

Я уже пробовал заменить анализатор по умолчанию на анализатор снежного кома, и тогда это работает; Дело в том, что мне совершенно необходимы анализаторы для конкретной области, так что это мне не поможет. Я также пробовал разные анализаторы и такие вещи, как установка "index" на "no", но безрезультатно.

Что я делаю не так?

9
задан Felix 3 June 2011 в 12:34
поделиться