私は最近、Elasticsearch について読みました。Jest を使用して Amazon Elasticsearch Service とやり取りしています。Jest のドキュメントとインデックス データを ES に活用することができました。
ただし、ブール クエリを使用してクエリを実行しようとすると、レイテンシが非常に高くなります。POSTMAN を使用して POST リクエストを実行してみましたが、レイテンシーがはるかに短いことがわかりました。
次に例を示します。
Jest クエリ: キー、値を指定: オブジェクトのリストを返します。
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」: false、「_shards」: {「合計」: 10、「成功」: 10、「失敗」: 0 }、
Searchsourcebuilder も使ってみました。しかし、役に立たない。正しい API を使用していますか?