2016-05-24 7 views
0

最近私はElasticsearchについて読んでおり、Jestを使ってAmazon Elasticsearchサービスとやり取りしています。私はJestの文書と索引をESに活用することができました。JestClientを使用したElasticSearchのクエリは非常に遅いようです

しかし、(ブールクエリを使用して)クエリを実行しようとすると、非常に高い待ち時間が発生します。私はPOSTMANを使ってPOSTリクエストを実行しようとしましたが、レイテンシはずっと少なくなっています。

はここに例を示します

冗談クエリ:オブジェクトのリストを返します:キー、値が与えられました。

JestClientクライアント。

String query = "{\n" + 
     " \"query\" : \n" + 
     "  {\"bool\": \n" + 
     "   { \"must\": \n" + 
     "    [\n" + 
     "     {\"match\": \n" + 
     "      {\"" + key +"\" : \"" + value + "\"}\n" + 
     "     }\n" + 
     "    ]\n" + 
     "   }\n" + 
     "  }\n" + 
     "}"; 

long startTime, endTime; 

Search search = new Search.Builder(query) 
     // multiple index or types can be added. 
     .addIndex(indexName) 
     .addType(typeName) 
     .build(); 
endTime = System.currentTimeMillis(); 
System.out.println("SearchBuilder: " + (endTime - startTime)); 

startTime = endTime; 
JestResult result = client.execute(search); 
endTime = System.currentTimeMillis(); 

System.out.println("ClientExecute: " + (endTime - startTime)); 

return result.getSourceAsObjectList(<Object>.class); 

出力: SearchBuilder:12 ClientExecute:1193

POSTMANを使用して一方: 私はボディとPOSTリクエストを持っている:

{ 
    "query" : {"bool": { "must": [{"match": {key : value}}]}} 
} 

これは、上で実行されます。 es.ap-southeast-1.es.amazonaws.com/index/_search 出力:

" ":、1 "TIMED_OUTた":偽、 "_shards":{ "合計":10、 "成功":10、 "が" 失敗しました:0 }、

私はSearchsourcebuilderを使用してみましたよくしかし、役に立たない。正しいAPIを使用していますか?

ありがとうございます! Tejas

+0

私は同じ問題を抱えています。同じマシンからのCURLが109ミリ秒かかる#JESTのクエリは11秒です。 JEST –

+0

のec2マシンはどこにありますか?遠く離れたクラスタに配置されている場合は、問題が表示されます。最高ののは、ローカルのデスクトップではなく、同じクラスタ内の時間をチェックするコードを実行することです。 –

+0

これはawsのVPCにあります。 –

答えて

1

このライン

"took": 1, "timed_out": false, "_shards": { "total": 10, "successful": 10, "failed": 0 } 

は、クエリを実行するために、実際のESエンジンをかかった時間を示していますが、それはクエリを送信するか、上のあなたに結果を返すに任意の待ち時間が含まれていません。インターネット。あなたのJestClientの例では、この時間も含めて本物ですから、JestClientの例は同じ速度で実行されますが、時間差はデータの送受信に費やされる時間にすぎません。

私はJestに似ていませんが、私はCestでNestを使っています(これはほぼ同じと思います)。その結果、同じ "take"、 "timed_out"統計を得ることができます。戻りオブジェクト

関連する問題