繁体   English   中英

相当于Solr getBeans的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM