我正在使用spring data elasticsearch,我希望能够在“fruit”类型的索引“fruits”上执行以下搜索查询:
{
'sort': {'fruitid': 'desc'},
'query': {
'query_string': {
'query': u'Banana AND (start:>=1492274000000) AND (end:<=1386842400000)'
}
},
'facets': {
'fruit_color': {
'terms': {'field': 'fruit_color', 'size': 5}
},
'fruit_weight': {
'terms': {'field': 'fruit_weight', 'size': 5}
}
}
如何使用Java API执行此操作?注意我不想使用任何模型类。
答案 0 :(得分:0)
下面的Java代码向您展示了如何为水果颜色和重量创建两个TermFacetRequest
以及如何通过调用withFacet()
将它们添加到查询中。它还会向您展示如何使用query_string
方法调用添加QueryBuilders.queryStringQuery()
查询。
// create the fruit color facet
TermFacetRequest fruitColor = new TermFacetRequest("fruit_color");
fruitColor.setFields("fruit_color");
fruitColor.setSize(5);
// create the fruit weight facet
TermFacetRequest fruitWeight = new TermFacetRequest("fruit_weight");
fruitWeight.setFields("fruit_weight");
fruitWeight.setSize(5);
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withPageable(new PageRequest(0, 10))
.withQuery(QueryBuilders.queryStringQuery("Banana AND (start:>=1492274000000) AND (end:<=1386842400000)"))
.withSort(SortBuilders.fieldSort("fruitId").order(SortOrder.DESC))
.withIndices("fruit").withTypes("fruit")
.withFacet(fruitColor) <--- add the fruit color facet
.withFacet(fruitWeight); <--- add the fruit weight facet