我使用的是elasticsearch版本6.4.2
我成功使用 REST API 创建了 GET 查询,现在我想使用 JAVA api 执行相同的查询。
这是查询:
GET _search
{
"query":{
"bool":{
"must":{
"match":{
"tags":"kpi"
}
},
"filter":{
"range":{
"@timestamp":{
"gt":"now-5m"
}
}
}
}
}
}
我阅读了此文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-compound-queries.html但我仍然不清楚这是否是我正在寻找的以及如何使用它。 考虑一下查询可能会返回大量必须由我的 Java 应用程序处理的结果。
此外,由于我必须每 5 分钟执行一次此查询,因此如何优化它(如果可能)?
最佳答案
如果你的项目是基于maven的,你可以使用elasticsearch客户端依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.6.2</version>
</dependency>
您需要的查询是:
val query = QueryBuilders.boolQuery()
.must(
QueryBuilders.rangeQuery("timestamp").from(startDate)
)
.must(
QueryBuilders.termQuery("tags", "kpi")
)
最后,要执行查询,您可以使用client.search(query)
。 client
是 RestHighLevelClient
类型。
关于java - Elasticsearch Java API boolQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53143508/