Я использовал Elastic
DSLQuerySearch
и RestHighLevelClient
и обнаружил, что DSLQuerySearch
результаты намного лучше и конкретнее, чем RestHighLevelClient
. Я что-то пропустил? Совместное использование разных кодов
DSLQuerySearch
String result = a.executeDSLQuerySearch(
INDEX
+ "/"
+ TYPE
+ "/_search?pretty&filter_path=hits.hits._source&_source=field1,field2,field3",
searchQuery
);
против RestHighLevelClient
SearchRequest searchRequest = new SearchRequest(INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.fetchSource(includeFields, excludeFields);
/* Choose field match or matchAllQuery. */
searchSourceBuilder.query(QueryBuilders.multiMatchQuery(query, "field1", "field2", "field3"));
searchSourceBuilder.query(geoDistanceQuery("geo")
.geohash(geoHash)
.distance(Constants.MAX_Q_SEARCH_DISTANCE, DistanceUnit.KILOMETERS));
searchSourceBuilder.sort(new GeoDistanceSortBuilder("geo", geoHash).order(SortOrder.DESC));
searchSourceBuilder.size(PaginationEnum.TEN.getLimit());
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(TimeValue.timeValueMinutes(MINUTES));
searchResponse = a.restHighLevelClient().search(searchRequest, RequestOptions.DEFAULT);
Результат, который я ожидаю, более конкретен. RestHighLevelClient
дает очень общий результат. (читать дальше не имеет отношения), тогда как DSLQuerySearch
находится на месте.