使用Java API for ElasticSearch进行日期范围搜索的问题

时间:2019-01-30 22:29:05

标签: java elasticsearch

我能够成功执行和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;
}

一旦解决了这个问题,我真正需要做的就是查询所有包含给定范围日期的字段。我想避免知道字段名称。

谢谢!

0 个答案:

没有答案