Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Solr getBeans的ElasticSearch等价物_Java_Solr_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,Solr,elasticsearch" /> elasticsearch,Java,Solr,elasticsearch" />

Java Solr getBeans的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

我正在尝试从Solr到Elasticsearch,我一直在将一些使用Solr的类转换为Elasticsearch,但现在我陷入了这个困境

在索尔,我曾经有:

QueryResponse response = getServer().query(myQuery);
List<MyClass> result = response.getBeans(MyClass.class);

然后解析结果来创建我自己的bean

任何正确方向的帮助或指点都将不胜感激


谢谢。

Elasticsearch允许您以不同格式阅读整个源代码,其中最有趣的是:

  • 作为
    字符串
    通过
    SearchHit#sourceAsString
    方法
  • 通过
    SearchHit#sourceAsMap
    方法作为
    Map
请注意,源代码并不是返回结果的唯一方法:您还可以请求一些特定字段,这些字段可以存储在lucene中,也可以在未存储时从源代码自动加载。然后通过
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();