gpt4 book ai didi

java - ElasticSearch post_filter Java API问题

转载 作者:行者123 更新时间:2023-12-01 16:39:07 25 4
gpt4 key购买 nike

我尝试使用 ElasticSearch Java API 执行查询字符串查询,然后根据结果集中的字段按日期范围限制结果。当我使用 Kibana 进行测试时,我得到了 77 次点击,但是当我尝试使用 Java API 执行相同的操作时,我得到了“0”次点击。

这是用 Kibana 编写的查询:

GET /enyo_cad/_search
{
"from": 0, "size": 20,
"query": {
"query_string": {
"query": "smith",
"lenient": true
}
},
"post_filter": {
"range": {
"cadIncident.dateTimeReceived": {
"gte": "2014-01-01T00:00:00",
"lte": "2016-01-01T00:00:00"
}
}
},
"highlight": {
"fields": {
"*": {}
},
"require_field_match": false
},
"sort": [
{ "cadIncident.dateTimeReceived": { "order": "desc" }},
{ "_score": { "order": "desc" }}
]
}

这是我的 Java 代码:

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
searchSourceBuilder.query(QueryBuilders.queryStringQuery(searchString)
.lenient(Boolean.TRUE)
.analyzeWildcard(Boolean.TRUE)
);
searchSourceBuilder.from(fromHit);
searchSourceBuilder.size(pageSize);
if (startDate != null && endDate != null) {
String dtName = getDateTimeAttributeName(appList, radarManager);

searchSourceBuilder.postFilter(QueryBuilders.rangeQuery(dtName)
.gte(startDate)
.lte(endDate));
}

// This section will sort the results IF there is only 1 application module selected OTHERWISE default revelvance score based sorting will continue.
if (dateSort && appList.size() == 1) {
searchSourceBuilder.sort(getDateTimeAttributeName(appList, radarManager), SortOrder.DESC);
searchSourceBuilder.sort("_score", SortOrder.DESC);
}

HighlightBuilder highlightBuilder = new HighlightBuilder();
HighlightBuilder.Field highlightFields = new HighlightBuilder.Field("*");
highlightFields.highlighterType("unified"); //highlighter type unified is default https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html
highlightBuilder.field(highlightFields);
searchSourceBuilder.highlighter(highlightBuilder);

searchRequest.source(searchSourceBuilder);
searchRequest.indices(indexFilter);



searchResponse = restClient.search(searchRequest, requestOptions);

SearchHits hits = searchResponse.getHits();

任何帮助将不胜感激..

最佳答案

找到了解决方案..很抱歉这篇文章只是简单地缺少一对括号..应该是

if (dateSort && (appList.size() == 1)) {

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

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