im8*_*bit 5 java solr elasticsearch
我正试图从Solr转到Elasticsearch,我一直在将我使用Solr的一些类转换为Elasticsearch但是现在我陷入了困境.
在Solr,我曾经有过:
QueryResponse response = getServer().query(myQuery);
List<MyClass> result = response.getBeans(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
就是这样,我得到了一个我可以使用MyClass对象的List,但是我没有找到ElasticSearch java API中的getBeans的等价物,是否有类似的东西,或者我必须得到结果源
searchHit.getSourceAsString();
Run Code Online (Sandbox Code Playgroud)
要么
searchHit.getSource();
Run Code Online (Sandbox Code Playgroud)
并解析结果以创建我自己的bean?
任何帮助或指针在正确的方向将非常感激.
谢谢.
Elasticsearch允许您以不同的格式阅读整个源代码,其中最有趣的是:
String通过SearchHit#sourceAsString方法Map<String, Object> 通过SearchHit#sourceAsMap方法请注意,源不是获取结果的唯一方法:您还可以请求某些特定字段,这些字段可以存储在lucene中,也可以在未存储时从源自动加载.然后你会Map<String, SearchHitField>通过这个SearchHit#fields方法回来.
Elasticsearch比Solr更加面向json,提供了高度优化的方式来读取和生成json对象.据我所知,没有开箱即用的方法可以直接从SearchHit使用Java API 获取Java对象.曾经有一个有趣的osem项目似乎做了类似于你正在寻找的东西,但它似乎不再被维护.
如果您确实需要,可以使用不同的库将Json对象转换为Java对象.elasticsearch本身在内部使用杰克逊.
否则,Java API的替代方案是Jest客户端,它允许将文档索引和检索为POJO.但在这种情况下,您将使用一个外部库,它将Rest调用发送到elasticsearch而不是Java API,它们非常强大.另一方面,您不需要将整个elasticsearch作为依赖项.
| 归档时间: |
|
| 查看次数: |
1232 次 |
| 最近记录: |