elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

使用JavaAPI的Elasticsearch

使用JavaAPI的Elasticsearch,java,elasticsearch,Java,elasticsearch,您好,我正试图通过遵循sql查询来执行弹性搜索查询,我希望使用JavaAPI实现相同的逻辑 select * from log , web where l.loghost = w.webhost and @datetime between '2016-05-20' AND '2016-05-25' log和web是不同的类型,索引设置为logstash log-*和logstash web*,@timestamp格式类似于“2016-05-20T17:14:01.037Z” 现在我有了下面的

您好,我正试图通过遵循sql查询来执行弹性搜索查询,我希望使用JavaAPI实现相同的逻辑

select * from log , web where l.loghost = w.webhost and @datetime between '2016-05-20' AND '2016-05-25' 
log
web
是不同的类型,索引设置为
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();
请指导我是弹性搜索新手。提前感谢。

您需要将a与
查询\u字符串组合在a中:

然后

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

从“RangeQueryBuilder range=QueryBuilders.rangeQ……”中,我得到了错误消息“类型不匹配:无法从org.elasticsearch.index.query.RangeQueryBuilder转换到org.apache.lucene.queryparser.xml.builders.RangeQueryBuilder”,要使用的正确导入是
导入org.elasticsearch.index.query.RangeQueryBuilder
导入org.apache.lucene.queryparser.xml.builders.RangeQueryBuilder对于
QueryBuilders
,您有什么导入语句?我不明白您的问题是什么。请详细解释,以便我们提供帮助。此外,你不应该为这个问题创建答案,只需用其他信息更新你的问题。
...
.setQuery(QueryBuilders.boolQuery().filter(qs).filter(range))
...