如何在elasticsearch上使用带有java api的haschildfilter

rslzwgfq  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(328)

我正在尝试使用geobundingbowfilter请求地理定位。这是完美的工作。我的地理位置与其他对象有父子关系。我想让这个对象有一个我的地理过滤器而不是地理位置的响应。我试图使用haschildfilter,但我的响应命中率始终为零。
下面是我使用的代码:

SearchResponse response = client.prepareSearch(index)
                .setTypes(type)
                .setSearchType(SearchType.QUERY_THEN_FETCH)
                .setQuery(QueryBuilders.matchAllQuery())
                .setPostFilter(FilterBuilders.hasChildFilter("location", FilterBuilders.geoBoundingBoxFilter("point")
                        .topLeft(topLeftLatitude, topLeftLongitude)
                        .bottomRight(bottomRightLatitude, bottomRightLongitude)))
                        .execute()
                        .actionGet();       
return response;

提前谢谢。

neskvpey

neskvpey1#

解决方法其实很简单,在haschildfilter之前我停止了query.matchall()。我的功能如下:

SearchResponse response = client
            .prepareSearch(index)
            .setPostFilter( FilterBuilders.hasChildFilter(type,FlterBuilders
                            .geoBoundingBoxFilter("point")
                            .bottomRight(bottomRightLatitude,bottomRightLongitude)
                            .topLeft(topLeftLatitude,topLeftLongitude))).execute()
            .actionGet();

我希望它能帮助你们中的一些人。

相关问题