2017-06-26 18 views
0

elasticsearch DBに約1TBのデータをアップロードしました。そして、検索10000としてindex.max_result_windowのデフォルト値は「+サイズから」弾性検索で「search_after」を使用して1Mデータを検索する

  1. 、私は100000から検索したかった、それゆえ私は100000にindex.max_result_window設定 - 私は、次の方法を試してみました検索するための 100000からsize = 10までですが、ヒープサイズがいっぱいになります。

  2. スクロールAPI - 古いセグメントを有効に保つために、より多くのファイルハンドルを使用します。したがって、ノードで構成されたメモリを再び消費します。

  3. search_after - 私は_uidに基づいて文書を分類しようとしたが、それは誤りをfollwoing私を与える -

-

{ 
    "error": { 
    "root_cause": [ 
     { 
     "type": "circuit_breaking_exception", 
     "reason": "[fielddata] Data too large, data for [_uid] would be [13960098635/13gb], which is larger than the limit of [12027297792/11.2gb]", 
     "bytes_wanted": 13960098635, 
     "bytes_limit": 12027297792 
    } 
    } 
}, 

このエラーを解決するためにできることは何とでもありますページ区切りで大量のデータを検索する最も効率的な方法は?

+0

検索リクエストの本文を投稿できますか? –

+0

私は渡された "_id"が大きく、ドキュメントによると "id"は索引付けされていませんが、 "_uid"は索引付けされていれば大きすぎないはずです。 –

答えて

0

フィールドデータサイズのために、回路ブレーカーが突き当っています。割り当てられたヒープの部分よりも大きい。

はこっちElasticsearchのマニュアルを参照してください:https://www.elastic.co/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html#circuit-breaker

あなたはヒープサイズを増やすことを検討することができ、検索要件に応じて、それはあなたのシナリオでは発生しませんので、あなたは回路ブレーカの制限を変更することができます。これを回避する最も良い方法は、フィールドデータのキャッシュサイズを制限することです。

あなたはconfig/elasticsearch.ymlファイルにこの設定を追加することにより、fielddataに(相対または絶対)の上限値を置くことができます。詳細については、

indices.fielddata.cache.size: 20% 

参照:https://www.elastic.co/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html#fielddata-size

そして、この既存の答え:FIELDDATA Data is too large