gpt4 book ai didi

java - 使用 Java api 的 Elasticsearch

转载 作者:行者123 更新时间:2023-11-30 08:01:33 27 4
gpt4 key购买 nike

您好,我正在尝试按照 sql 查询对 Elasticsearch 进行查询,我想使用 Java API 实现相同的逻辑

select * from log , web where l.loghost = w.webhost and @datetime between '2016-05-20' AND '2016-05-25' 

logweb是不同的类型,索引设置为logstash-log-*logstash-web*@timestamp 格式类似于 "2016-05-20T17:14:01.037Z"

现在我有以下 Java 代码,但我不知道如何在两个日期之间设置,所以它不会返回预期的输出

  SearchResponse response = client.prepareSearch("logstash-log-*","logstash-web-*")
.setTypes("log","web")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setFetchSource(new String[]{"*"}, null)
.setQuery(QueryBuilders.queryStringQuery("1.2.3.4").field("*_host"))// Query
.execute()
.actionGet();

请指导我是 Elastic 搜索的新手。提前致谢。

最佳答案

您需要合并一个 range querybool/filter query 中使用您的 query_string 查询:

QueryStringQueryBuilder qs = QueryBuilders.queryStringQuery("1.2.3.4").field("*_host");
RangeQueryBuilder range = QueryBuilders.rangeQuery("@timestamp")
.gte("2016-05-20T00:00:00.000Z")
.lte("2016-05-25T00:00:00.000Z");

然后

...
.setQuery(QueryBuilders.boolQuery().filter(qs).filter(range))
...

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com