elasticsearch - 使用JestClient进行ElasticSearch查询似乎很慢

标签 elasticsearch jest amazon-elasticsearch

我最近阅读了有关Elasticsearch的信息,并且正在使用Jest与Amazon Elasticsearch Service进行交互。我已经能够利用Jest的文档并在ES中建立索引。

但是,当我尝试查询(使用 bool(boolean) 查询)时,我看到了极高的延迟。我尝试使用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
客户端执行:1193

另一方面使用POSTMAN:
我的 body 有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吗?

谢谢!
特哈斯

最佳答案

这条线

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

告诉您实际的ES引擎运行查询所花的时间,但不包括通过互联网发送查询或将结果返回给您的任何延迟。在您的JestClient示例中,您确实会包含此时间,因此,完全有可能在您的JestClient示例以相同的速度执行时,时间差仅与传输和接收数据所花费的时间有关。

我对Jest不太熟悉,但是我在C#中使用过Nest(我认为几乎相同),并且在结果中,您应该能够在返回对象中获得相同的“took”,“timed_out”统计信息。

关于elasticsearch - 使用JestClient进行ElasticSearch查询似乎很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37404319/

相关文章:

amazon-web-services - ValidationException : Before you can proceed, 您必须启用服务相关角色才能授予 Amazon ES 访问您的 VPC 的权限

elasticsearch - 管理Logstash管道的输出

database - Elasticsearch 列的唯一过滤器不起作用(插入重复项)

elasticsearch - Elasticsearch 查询字符串Java api对所有结果给出相同的分数

elasticsearch - Jest 客户端大小参数被忽略

python - AWS Elasticsearch 服务角色权限

java.lang.NoClassDefFoundError : org/elasticsearch/script/mustache/SearchTemplateRequest

elasticsearch - 隐藏 ES 响应中的公共(public)字段

elasticsearch - 在Elastic Search中找到从点到n个最近的多边形的距离?

elasticsearch - 在elasticSearch中使用RestClient检索特定字段