0

私は最近、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 を使用していますか?

4

1 に答える 1