[英]Is there an equivalent class/API in Solr like IndexingOperationListener in elasticsearch?
[英]ElasticSearch equivalent of Solr getBeans
我正尝试从Solr转到Elasticsearch,我一直在将一些与Solr一起使用的类转换为Elasticsearch,但现在我陷入了困境。
在Solr中,我曾经有:
QueryResponse response = getServer().query(myQuery);
List<MyClass> result = response.getBeans(MyClass.class);
就是这样,我得到了一个可以使用MyClass对象的列表,但是我没有在ElasticSearch java API中找到与getBeans等效的列表,是否有类似的东西,或者我必须使用
searchHit.getSourceAsString();
要么
searchHit.getSource();
并解析结果以创建自己的bean?
任何对正确方向的帮助或指导将不胜感激。
谢谢。
Elasticsearch允许您以不同的格式阅读整个源,其中最有趣的是:
SearchHit#sourceAsString
方法作为String
SearchHit#sourceAsMap
方法作为Map<String, Object>
请注意,来源不是获取结果的唯一方法:您还可以要求一些特定字段,这些字段可以存储在lucene中,或者在不存储时自动从源中加载。 然后,您将通过SearchHit#fields
方法获取Map<String, SearchHitField>
。
Elasticsearch比Solr更面向json,提供了高度优化的方式来读取和生成json对象。 据我所知,还没有现成的方法可以使用Java API从SearchHit
直接取回Java对象。 过去曾经有一个有趣的osem项目 ,它看起来与您正在寻找的功能类似,但是似乎不再维护了。
如果确实需要,可以使用不同的库将Json对象转换为Java对象。 elasticsearch本身内部使用Jackson。
否则, Jest客户端是Java API的替代方法,它确实允许将文档作为POJO进行索引和检索。 但是在这种情况下,您将使用一个外部库,该库将Rest调用发送到elasticsearch而不是强大的Java API;另一方面,您不需要整个elasticsearch作为依赖项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.