2016-03-30 7 views
0

BulkRequestの中でprepareDeleteクエリを使用しています。削除する必要があるIDのセットがあります。ES 2.2.0からES 2.3.0への移行中にRoutingMissingExceptionが発生する

私が使用:

BulkRequestBuilder bulkRequest = searchClient.prepareBulk(); 
for id in ids { 
    bulkRequest.add(searchClient.prepareDelete("indexName", "childType", id)); 
} 
BulkResponse bulkResponse = bulkRequest.execute().actionGet(); 

を削除ため、この構造は、ES 2.2.0で働いていたが、ES 2.3.0で、私はRoutingMissingExceptionを取得します。

私はbilkResponse.buildFailureMessage()を印刷し、私はしても、既存のインデックスの設定/マッピングを変更していない

[0]: index [indexName], type [childType], id [215f3228a3c53970883ae0d3b22dae6f], message [[indexName] RoutingMissingException[routing is required for [indexName]/[childType]/[215f3228a3c53970883ae0d3b22dae6f]]] 

を取得する場合。

何故その理由が考えられますか?

答えて

0

1と同様の問題は、あなたが親と子の関係を持っている場合は、あなたがたびURLであなたを 親を指定する必要が完了

のための答えを引用here

に答えのように思えます子供にアクセスしようとすると、 ルーティングが親に依存するようになります。あなたの例では

、あなたは試してみたいと思います:

カール-XDELETE http://localhost:9200/indexName/childType/215f3228a3c53970883ae0d3b22dae6f?parent=[parent_id]

また、これはあなたに役立つことができます。 Delete child doc

0

@rahulrocが正しいです。私はこの機能を導入問題への参照の時系列リストを追加してい:

  1. Don't broadcast deletes to all shards(2014)
  2. Delete api: remove broadcast delete if routing is missing when required(2015)
  3. Bulk api: fail deletes when routing is required but not specifiedを(2016)

たぶん3を更新しました例外を作成したものはes-2.3.0に表示されます。 したがって、子ドキュメントIDから親を取得する場合は、has_childqueryを使用することができます。

関連する問題