我正在使用官方的Elasticsearch Java客户端。它工作得很好,但不幸的是,它的对象没有实现可序列化的接口。我特别需要序列化QueryBuilder的实例。
我发现了两种使用客户端序列化对象的方法。其中之一就是使用QueryBuilder。writeTo()。另一个是使用:
Strings.toString(queryBuilder.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS))
但是我找不到如何在这两种情况下反序列化对象。
我也不确定这是否是解决这项任务的最佳方式。
最后,我得到了以下代码:
序列化:
// wrap query with source to deserialize any type of query
SearchSourceBuilder query = new SearchSourceBuilder().query(this.query);
String sourceJson = Strings.toString(query);
反序列化:
private static final NamedXContentRegistry xContentRegistry;
static {
SearchModule searchModule =
new SearchModule(Settings.EMPTY, false, Collections.emptyList());
xContentRegistry =
new NamedXContentRegistry(searchModule.getNamedXContents());
}
...
XContentParser parser =
XContentType.JSON.xContent().createParser(xContentRegistry,
LoggingDeprecationHandler.INSTANCE,
sourceJson);
SearchSourceBuilder sourceBuilder = SearchSourceBuilder.fromXContent(parser);
this.query = sourceBuilder.query();
因此,您可以将此代码添加到readObject()
和WriteObject()
方法中,为ES查询对象提供(反)序列化。
使用Elasticsearch 7.5.1客户端库实现。
问题内容: 该站点仅包含JSON文档,而没有Java客户端。我应该执行某种映射吗? 例如地理位置查询:http : //www.elasticsearch.org/guide/reference/query- dsl/geo-distance-range- filter.html 如何使用Java客户端编写这样的查询? 谢谢杰森 问题答案: 不明显但不那么复杂;)
问题内容: 自将我的Nest客户端升级到2.2.1之后,我无法看到要提交给我的elasticsearch客户端(现在为2.3.0版)的查询。我曾经用这条线: 但是,此方法现在返回void而不是它以前使用的JSON。ConnectionStatus也不存在,所以我再也看不到我发送的json了,有人知道吗?CallDetails.RequestBodyInBytes可用,但返回null。 问题答案:
查询返回此错误。 Elasticsearch\Common\Exceptions\BadRequest est400Exception:{"error":{"root_cause":[{"type":"parsing_exception","原因":"未知查询[查询]","line": 1,"coll": 62}],"type":"x_content_parse_exception","原因":"
我正在尝试重建一个与elasticsearch 2.4对话的插件,以便与elasticsearch 5配合使用。 代码来自:https://github.com/pentaho/pentaho-kettle/blob/master/plugins/elasticsearch-bulk-insert/src/org/pentaho/di/trans/steps/elasticsearchbulk/E
这是我的Elasticsearch sql查询。我使用Kibana执行了这个查询,并得到了有效的输出。 明白吗?format=json{“query”:“从eps_stbl_日志中选择Count(appId),其中cast(timestamp AS DATE)=TODAY()和status='COMPLETED'” 这需要在restHighLevelClient java API中编写。你能帮助编
问题内容: 我正在尝试从Java连接到ElasticSearch,但只能通过HTTP连接。我不能使用。ElasticSearch REST API周围是否有Java客户端包装?如果可以,该如何使用? 问题答案: 嗨,有一个全新的项目正好满足您的需求。基于Java的RestAPI for Elasticsearch 看看这个!它的名字是JEST