use of org.elasticsearch.index.query.QueryBuilder in project fess by codelibs.
the class BsGroupCB method build.
// ===================================================================================
// Build
// =====
@Override
public SearchRequestBuilder build(SearchRequestBuilder builder) {
if (_conditionQuery != null) {
QueryBuilder queryBuilder = _conditionQuery.getQuery();
if (queryBuilder != null) {
builder.setQuery(queryBuilder);
}
_conditionQuery.getFieldSortBuilderList().forEach(sort -> {
builder.addSort(sort);
});
}
if (_conditionAggregation != null) {
_conditionAggregation.getAggregationBuilderList().forEach(builder::addAggregation);
}
if (_specification != null) {
builder.setFetchSource(_specification.columnList.toArray(new String[_specification.columnList.size()]), null);
}
return builder;
}
use of org.elasticsearch.index.query.QueryBuilder in project fess by codelibs.
the class EsAbstractConditionQuery method regRangeQ.
protected RangeQueryBuilder regRangeQ(String name, ConditionKey ck, Object value) {
checkEsInvalidQuery(name, value);
assertObjectNotNull("ck", ck);
if (queryBuilderList != null) {
for (QueryBuilder builder : queryBuilderList) {
if (builder instanceof RangeQueryBuilder) {
RangeQueryBuilder rangeQueryBuilder = (RangeQueryBuilder) builder;
if (rangeQueryBuilder.toString().replaceAll("\\s", "").startsWith("{\"range\":{\"" + name + "\"")) {
addRangeC(rangeQueryBuilder, ck, value);
return rangeQueryBuilder;
}
}
}
}
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(name);
addRangeC(rangeQueryBuilder, ck, value);
regQ(rangeQueryBuilder);
return rangeQueryBuilder;
}
use of org.elasticsearch.index.query.QueryBuilder in project fess by codelibs.
the class KeyMatchHelper method getBoostedDocumentList.
public List<Map<String, Object>> getBoostedDocumentList(final String term, final int size) {
final FessEsClient fessEsClient = ComponentUtil.getFessEsClient();
final Pair<QueryBuilder, ScoreFunctionBuilder> pair = keyMatchQueryMap.get(toLowerCase(term));
if (pair == null) {
return Collections.emptyList();
}
final FessConfig fessConfig = ComponentUtil.getFessConfig();
return fessEsClient.getDocumentList(fessConfig.getIndexDocumentSearchIndex(), fessConfig.getIndexDocumentType(), searchRequestBuilder -> {
searchRequestBuilder.setPreference(Constants.SEARCH_PREFERENCE_PRIMARY).setQuery(pair.getFirst()).setSize(size);
return true;
});
}
use of org.elasticsearch.index.query.QueryBuilder in project fess by codelibs.
the class IndexingHelper method getChildDocumentList.
public List<Map<String, Object>> getChildDocumentList(final FessEsClient fessEsClient, final String id, final String[] fields) {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
final QueryBuilder queryBuilder = QueryBuilders.termQuery(fessConfig.getIndexFieldParentId(), id);
return getDocumentListByQuery(fessEsClient, queryBuilder, fields);
}
use of org.elasticsearch.index.query.QueryBuilder in project xmall by Exrick.
the class SearchServiceImpl method search.
@Override
public SearchResult search(String key, int page, int size, String sort, int priceGt, int priceLte) {
try {
Settings settings = Settings.builder().put("cluster.name", ES_CLUSTER_NAME).build();
TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName(ES_CONNECT_IP), 9300));
SearchResult searchResult = new SearchResult();
// 设置查询条件
QueryBuilder qb = matchQuery("productName", key);
// 设置分页
if (page <= 0) {
page = 1;
}
int start = (page - 1) * size;
// 设置高亮显示
HighlightBuilder hiBuilder = new HighlightBuilder();
hiBuilder.preTags("<a style=\"color: #e4393c\">");
hiBuilder.postTags("</a>");
hiBuilder.field("productName");
// 执行搜索
SearchResponse searchResponse = null;
if (priceGt >= 0 && priceLte >= 0 && sort.isEmpty()) {
searchResponse = client.prepareSearch(ITEM_INDEX).setTypes(ITEM_TYPE).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(// Query
qb).setFrom(start).setSize(size).setExplain(// 从第几个开始,显示size个数据
true).highlighter(// 设置高亮显示
hiBuilder).setPostFilter(// 过滤条件
QueryBuilders.rangeQuery("salePrice").gt(priceGt).lt(priceLte)).get();
} else if (priceGt >= 0 && priceLte >= 0 && sort.equals("1")) {
searchResponse = client.prepareSearch(ITEM_INDEX).setTypes(ITEM_TYPE).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(// Query
qb).setFrom(start).setSize(size).setExplain(// 从第几个开始,显示size个数据
true).highlighter(// 设置高亮显示
hiBuilder).setPostFilter(// 过滤条件
QueryBuilders.rangeQuery("salePrice").gt(priceGt).lt(priceLte)).addSort("salePrice", SortOrder.ASC).get();
} else if (priceGt >= 0 && priceLte >= 0 && sort.equals("-1")) {
searchResponse = client.prepareSearch(ITEM_INDEX).setTypes(ITEM_TYPE).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(// Query
qb).setFrom(start).setSize(size).setExplain(// 从第几个开始,显示size个数据
true).highlighter(// 设置高亮显示
hiBuilder).setPostFilter(// 过滤条件
QueryBuilders.rangeQuery("salePrice").gt(priceGt).lt(priceLte)).addSort("salePrice", SortOrder.DESC).get();
} else if ((priceGt < 0 || priceLte < 0) && sort.isEmpty()) {
searchResponse = client.prepareSearch(ITEM_INDEX).setTypes(ITEM_TYPE).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(// Query
qb).setFrom(start).setSize(size).setExplain(// 从第几个开始,显示size个数据
true).highlighter(// 设置高亮显示
hiBuilder).get();
} else if ((priceGt < 0 || priceLte < 0) && sort.equals("1")) {
searchResponse = client.prepareSearch(ITEM_INDEX).setTypes(ITEM_TYPE).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(// Query
qb).setFrom(start).setSize(size).setExplain(// 从第几个开始,显示size个数据
true).highlighter(// 设置高亮显示
hiBuilder).addSort("salePrice", SortOrder.ASC).get();
} else if ((priceGt < 0 || priceLte < 0) && sort.equals("-1")) {
searchResponse = client.prepareSearch(ITEM_INDEX).setTypes(ITEM_TYPE).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(// Query
qb).setFrom(start).setSize(size).setExplain(// 从第几个开始,显示size个数据
true).highlighter(// 设置高亮显示
hiBuilder).addSort("salePrice", SortOrder.DESC).get();
}
SearchHits hits = searchResponse.getHits();
// 返回总结果数
searchResult.setRecordCount(hits.totalHits);
List<SearchItem> list = new ArrayList<>();
if (hits.totalHits > 0) {
for (SearchHit hit : hits) {
// 总页数
int totalPage = (int) (hit.getScore() / size);
if ((hit.getScore() % size) != 0) {
totalPage++;
}
// 返回结果总页数
searchResult.setTotalPages(totalPage);
// 设置高亮字段
SearchItem searchItem = new Gson().fromJson(hit.getSourceAsString(), SearchItem.class);
String productName = hit.getHighlightFields().get("productName").getFragments()[0].toString();
searchItem.setProductName(productName);
// 返回结果
list.add(searchItem);
}
}
searchResult.setItemList(list);
return searchResult;
} catch (Exception e) {
e.printStackTrace();
throw new XmallException("查询ES索引库出错");
}
}
Aggregations