次の設定で Elasticsearch にインデックスを作成しました。
{
"my_index" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1461229073677",
"uuid" : "7-TECarfRs6XO8yZE7SeWA",
"number_of_replicas" : "1",
"number_of_shards" : "5",
"version" : {
"created" : "1040599"
},
"settings" : {
"analysis" : {
"analyzer" : {
"second" : {
"type" : "custom",
"filter" : [ "lowercase", "synonym" ],
"tokenizer" : "standard"
}
},
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms" : [ "i pad => ipad", "smart phone => smartphone" ]
}
}
}
}
}
},
"warmers" : { }
}
}
今私がやろうとしているのは、次のコードを使用してマッピングを設定することです:
PutMapping putMapping = new PutMapping.Builder(
"my_index",
"my_index_type",
"{ \"properties\" : { \"Name\" : {\"type\" : \"string\", \"analyzer\" : \"second\"} } }"
).build();
JestResult result = client.execute(createIndex);
result = client.execute(putMapping);
編集
インデックスを作成するために使用しているコードは次のとおりです。
CreateIndex createIndex = new CreateIndex.Builder(indexName)
.settings(
ImmutableSettings.builder()
.loadFromClasspath(
"settings.json"
).build().getAsMap()
).build();
JestResult result = client.execute(createIndex);
そして、settings.json は次のようになります。
{
"settings": {
"analysis": {
"analyzer": {
"second": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"synonym"
]
}
},
"filter": {
"synonym" : {
"type" : "synonym",
"synonyms" : [
"i pad => ipad",
"smart phone => smartphone",
"i phone => iphone"
]
}
}
}
}
}
ただし、次のエラーが発生し続けます。
"MapperParsingException[Analyzer [second] not found for field [message]]"
「アナライザー」を削除すると、マッピングを設定できます。したがって、「設定」セクションが 2 回あるように見えますが、「settings.json」ファイルをどのように構成しても、これら 2 つのセクションが表示され続けます。JEST ページで指定されている例を調べましたが、役に立ちませんでした。https://github.com/searchbox-io/Jest/blob/master/jest/README.md
アイデアはありますか?