我能够成功执行和elasticSearch查询(如下):
GET _search
{
"query": {
"range" : {
"InputRecord.originationMetadata.created": {
"gte" : "01/01/2019",
"lte" : "01/31/2019",
"format": "MM/dd/yyyy"
}
}
}
}
但是,当我尝试使用Java API实现时,它不返回任何行(如下):
public List<SearchHit> queryByDate(Date beginDate, Date endDate, String[] indices) {
List<SearchHit> esData = new ArrayList<SearchHit>();
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.rangeQuery("myInput.myMeta.created").gte(beginDate).lte(endDate).format("MM/dd/yyyy"));
SearchRequest searchRequest = new SearchRequest();
if (indices != null && indices.length > 0) {
searchRequest.indices(indices);
}
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = null;
try {
searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException ex) {
Logger.getLogger(ElasticSearchDAO1.class.getName()).log(Level.SEVERE, null, ex);
}
if (searchResponse != null) {
for (SearchHit sh : searchResponse.getHits()) {
esData.add(sh);
}
}
return esData;
}
一旦解决了这个问题,我真正需要做的就是查询所有包含给定范围日期的字段。我想避免知道字段名称。
谢谢!