Cha*_*dor 5 hit nested java-api elasticsearch
我正在尝试使用Java API实现弹性搜索的内部命中,但我找不到任何关于它的文档或其他人正在使用的示例.我有我的JSON搜索,其工作方式如下:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"nested": {
"path": "locations",
"filter": {
"geo_distance": {
"distance": "20km",
"locations.address.geoLocation": {
"lat": 38.07061,
"lon": -76.77514
}
}
},
"inner_hits": {}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在elasticsearch库中看到了InnerHitsBuilder和addInnerHit方法,但我找不到有关如何使用它们的文档.
需要注意的是有大量的测试用例在各功能的被测试的ES源代码,所以浏览ES代码是一个令人难以置信的丰富的信息源.内部命中也不例外,你可以inner_hits在InnerHitsTests.java课堂上找到所有测试用例.
所以你上面的查询可以像这样创建:
// build the geo_distance filter
GeoDistanceFilterBuilder geo = FilterBuilders
.geoDistanceFilter("locations.address.geoLocation")
.distance("20km")
.lat(38.07061)
.lon(-76.77514);
// build the nested filter and add inner_hits
NestedFilterBuilder nested = FilterBuilders
.nestedFilter("locations", geo)
.innerHit(new QueryInnerHitBuilder()); <--- this is what you're looking for
// wrap it all inside a filtered query
FilteredQueryBuilder query = QueryBuilders
.filteredQuery(QueryBuilders.matchAllQuery(), nested);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |