java - Elasticsearch Java API boolQuery

标签 java elasticsearch

我使用的是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)clientRestHighLevelClient 类型。

关于java - Elasticsearch Java API boolQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53143508/

相关文章:

elasticsearch - 搜索字符串中有数字时,Elasticsearch通配符失败

Elasticsearch 和 word_delimiter 标记过滤器

java - 解析和操作奇怪格式的数据,同时保持格式

elasticsearch - 存储JSON数组字符串elasticsearch Bug

Java - 整数和二进制

java - Servlet 无法正常工作

java - 使用 SnakeYAML Java 将用户添加到 yml 文件作为嵌套在 block 序列中的 block 映射

elasticsearch - 如何使用java在Elasticsearch中按字段属性搜索文档?

java - 直接从存储库加载 Drools/KIE Workbench Artifact

java - Scala 参数传递给 Java (Play Framework)