Java Solr getBeans的ElasticSearch等价物
我正在尝试从Solr到Elasticsearch,我一直在将一些使用Solr的类转换为Elasticsearch,但现在我陷入了这个困境 在索尔,我曾经有:Java Solr getBeans的ElasticSearch等价物,java,solr,
elasticsearch,Java,Solr,
elasticsearch,我正在尝试从Solr到Elasticsearch,我一直在将一些使用Solr的类转换为Elasticsearch,但现在我陷入了这个困境 在索尔,我曾经有: QueryResponse response = getServer().query(myQuery); List<MyClass> result = response.getBeans(MyClass.class); 或 然后解析结果来创建我自己的bean 任何正确方向的帮助或指点都将不胜感激 谢谢。Elasticsearc
QueryResponse response = getServer().query(myQuery);
List<MyClass> result = response.getBeans(MyClass.class);
或
然后解析结果来创建我自己的bean
任何正确方向的帮助或指点都将不胜感激
谢谢。Elasticsearch允许您以不同格式阅读整个源代码,其中最有趣的是:
- 作为
通过字符串
方法SearchHit#sourceAsString
- 通过
方法作为SearchHit#sourceAsMap
Map
SearchHit#fields
方法返回Map
Elasticsearch比Solr更面向json,提供了读取和生成json对象的高度优化的方法。据我所知,没有现成的方法可以使用Java API直接从SearchHit
获取Java对象。以前有一些有趣的东西,看起来和你想要的东西很相似,但现在似乎已经不存在了
如果您确实需要,可以使用不同的库将Json对象转换为Java对象。elasticsearch本身在内部使用Jackson
否则,JavaAPI的另一种替代方法是,它允许将文档作为POJO进行索引和检索。但在这种情况下,您将使用一个外部库,它将Rest调用发送到elasticsearch,而不是非常强大的Java API。另一方面,您不需要整个elasticsearch作为依赖项。我刚刚发现:Pojo pojoBack=mapper.readValue(response.getSourceAsBytes(),Pojo.class);这是正确的方法还是有其他方法?再次感谢!感谢您的回答,我相信这是正确的,没有现成的解决方案,我昨天必须快速解决这个问题,因此我使用jackson将json转换为java对象,如下所示:ObjectMapper mapper=new ObjectMapper();Pojo Pojo=mapper.readValue(searchHit.getSourceAsString(),Pojo.class);--谢谢你的帮助!
searchHit.getSourceAsString();
searchHit.getSource();