個々のフィールドに異なるアナライザーを使用して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"
}
}
}
}'
ドキュメントを正しく読んだ場合、「tweet」タイプのインデックス「twitter」が作成され、「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」が返されます)。
デフォルトのアナライザーをスノーボールアナライザーに置き換えてみましたが、うまくいきました。つまり、私は完全にフィールド固有のアナライザーを持っている必要があるので、これは私を助けません。また、さまざまなアナライザーや「インデックス」を「いいえ」に設定するなどのことも試しましたが、役に立ちませんでした。
私は何が間違っているのですか?