gpt4 book ai didi

java - java客户端中的elasticsearch geohash facet

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:14 24 4
gpt4 key购买 nike

我找到了this amazing plugin用于在elasticsearch中创建基于geohash的facet。它似乎在 _head pluing 中工作得很好。我只是不太确定如何从 JavaClient 代码运行它。

我编写了运行匹配查询的代码,但不确定如何向其中添加 geohash 过滤器。

{
"query": {
"match_all": {}
},
"facets": {
"places": {
"geohash": {
"field": "location",
"factor": 0.9
}
}
}
}

我认为以下内容会有所帮助,但没有帮助。它抛出

线程“main”org.elasticsearch.action.search.SearchPhaseExecutionException中出现异常:无法执行阶段[查询],所有分片均失败; shardFailures {[IokTP1RuQ520T86dxU345w][easythahr][1]: SearchParseException[[easythahr][1]: from[0],size[100]: 解析失败 [无法解析源 [{"from":0,"size":第100章嵌套:SearchParseException[[easythahr][1]:from[0],size[100]:解析失败[找不到[facets]]]的facet类型; }{[IokTP1RuQ520T86dxU345w][easythahr][2]: SearchParseException[[easythahr][2]: from[0],size[100]: 解析失败 [无法解析源 [{"from":0,"size":第100章嵌套:SearchParseException[[easythahr][2]:from[0],size[100]:解析失败[找不到[facets]]]的facet类型; }{[IokTP1RuQ520T86dxU345w][easythahr][3]: SearchParseException[[easythahr][3]: from[0],size[100]: 解析失败 [无法解析源 [{"from":0,"size":第100章嵌套:SearchParseException[[easythahr][3]:from[0],size[100]:解析失败[找不到[facets]]]的facet类型; }{[IokTP1RuQ520T86dxU345w][easythahr][4]: SearchParseException[[easythahr][4]: from[0],size[100]: 解析失败 [无法解析源 [{"from":0,"size":第100章嵌套:SearchParseException[[easythahr][4]:from[0],size[100]:解析失败[找不到[facets]]]的facet类型; }{[IokTP1RuQ520T86dxU345w][easythahr][0]: SearchParseException[[easythahr][0]: from[0],size[100]: 解析失败 [无法解析源 [{"from":0,"size":第100章嵌套:SearchParseException[[easythahr][0]:from[0],size[100]:解析失败[找不到[facets]]]的facet类型; }

XContentBuilder b = jsonBuilder().startObject("places")
.startObject("geoHash")
.field("field", "location")
.field("factor",0.9)
.endObject()
.endObject();



SearchResponse response = client.prepareSearch("easythahr")
.setTypes("com.easytha.Student")
.setQuery(matchQuery)
.setFacets(b)
.setFrom(0)
.setSize(100)
.execute()
.actionGet();

最佳答案

我正在使用this plugin您提供的链接中也提到了这一点。这是构建其方面的一种方法,并且效果非常好。

XContentBuilder b = null;
try {
b = jsonBuilder().startObject().
startObject("places")
.startObject("geo_cluster")
.field("field", Field.geoLocation)
.field("factor",0.9)
.endObject()
.endObject()
.endObject();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

InternalGeoClusterFacet.registerStreams();


SearchRequestBuilder srb = client.prepareSearch("indexname")
.setTypes("indextype")
.setQuery(QueryBuilders.matchAllQuery())
.setFacets(b)
.setFrom(0)
.setSize(100);

SearchResponse response = srb.execute().actionGet();

第二种方式:将jar文件添加到buildpath后,您可以使用以下内容。

b = new GeoClusterFacetBuilder(facetName, facetField, facetFactor);

关于java - java客户端中的elasticsearch geohash facet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com