1

Elasticsearchインデックスが正しい設定とマッピングを持っていることを確認するために、次のコードがあります。

if (client.admin().indices().prepareExists(Index).execute().actionGet().exists()) {            
    client.admin().indices().prepareClose(Index).execute().actionGet();
    client.admin().indices().prepareUpdateSettings(Index).setSettings(settings.string()).execute().actionGet();
    client.admin().indices().prepareOpen(Index).execute().actionGet();
    client.admin().indices().prepareDeleteMapping(Index).setType(Type).execute().actionGet();
    client.admin().indices().preparePutMapping(Index).setType(Type).setSource(mapping).execute().actionGet();
} else {
    client.admin().indices().prepareCreate(Index).addMapping(Type, mapping).setSettings(settings).execute().actionGet();
}

設定とマッピングがすでに正常であっても、それらを更新するのは少しばかげているようです。しかし、もっと賢い方法で物事を行う方法はわかりません。助言がありますか?

どうもありがとう、

スタイン

4

1 に答える 1

4

現在の設定とマッピングを取得し、それらを更新する前にそれらが正しいことを確認できます。

ClusterStateResponse response = client.admin().cluster().prepareState()                
    .setFilterAll()
    .setFilterMetaData(false)
    .setFilterIndices(index)
    .execute().actionGet();
IndexMetaData indexMetaData = response.state().metaData().index(index);
Settings settings = indexMetaData.settings();
// Verify settings
MappingMetaData mapping = indexMetaData.mappings().get(type);
// Verify mapping
于 2012-09-11T13:28:18.577 に答える