最近私は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
私は同じ問題を抱えています。同じマシンからのCURLが109ミリ秒かかる#JESTのクエリは11秒です。 JEST –
のec2マシンはどこにありますか?遠く離れたクラスタに配置されている場合は、問題が表示されます。最高ののは、ローカルのデスクトップではなく、同じクラスタ内の時間をチェックするコードを実行することです。 –
これはawsのVPCにあります。 –