26

Java APIを使用してインデックスを作成し、カスタムアナライザーを指定する方法はありますか?インデックス作成時にマッピングを追加することをサポートしていますが、HTTP PUTを介してJSONを送信せずに、このようなことを行う方法を見つけることができません。

curl -XPUT localhost:9200/twitter?pretty=true -d '{
"analysis": {
       "analyzer": {
            "steak" : {
                "type" : "custom", 
                "tokenizer" : "standard",
                "filter" : ["snowball", "standard", "lowercase"]
            }
        }
    }
}'

JSONBuilderを使用してこのようなクエリを作成することはできますが、APIで実行する場所が見つからず、使用できるものがなく、私が見る限り、CreateIndexRequestどちらも使用できません。client.admin().indices()これを行う正しい方法は何ですか?

4

2 に答える 2

29

を使用してアナライザーを設定できますclient.admin().indices().prepareCreate("twitter").setSettings(...)。設定を作成する方法はいくつかあります。テキストやマップからそれらをロードしたり、必要に応じてjsonBuilderを使用したりすることもできます。

client.admin().indices().prepareCreate("twitter")
            .setSettings(Settings.settingsBuilder().loadFromSource(jsonBuilder()
                .startObject()
                    .startObject("analysis")
                        .startObject("analyzer")
                            .startObject("steak")
                                .field("type", "custom")
                                .field("tokenizer", "standard")
                                .field("filter", new String[]{"snowball", "standard", "lowercase"})
                            .endObject()
                        .endObject()
                    .endObject()
                .endObject().string()))
            .execute().actionGet();
于 2011-06-08T14:54:03.823 に答える
1

テスト環境にいる場合は、このプロジェクトを使用して、Javaアノテーションに基づいてインデックスを作成することもできます。 https://github.com/tlrx/elasticsearch-test

于 2012-07-04T10:17:08.267 に答える