您的位置 首页 java

Java开发者:Elasticsearch索引JavaBeans的简单方式,你会用吗?

Java开发者:Elasticsearch索引JavaBeans的简单方式,你会用吗?

谈到数据存储时,Java程序员习惯使用Java bean技术持久化。像Hibernate和JPA规范支持的关系数据库存储方案,以及Morphia和Spring Data 对MongoDB等非关系型数据库解决方案都很受欢迎并已被广泛应用。

使用Elasticsearch的开发人员有时也会有相同的愿望 – 传递一个Java bean并自动对其进行索引。Elasticsearch提供了一个Spring Data的实现,但它可能会造成开销,或者你使用的Elasticsearch版本不支持它。

如果你想用Elasticsearch的标准Java客户端来做同样的事情,那么就没有直接的支持,但它可以很容易地手工实现。

假如你想用以下简单得对象结构来表示一本书籍,、

Java开发者:Elasticsearch索引JavaBeans的简单方式,你会用吗?

通常情况下,也没有更简单的方法了。我们不需要Elasticsearch的特殊框架。Elastcsearch可以方便存储大多数JSON结构。幸运的是从Java对象中创建JSON文档是使用像Jackson或GSON这样的库来解决的。

我们可以简单地将一个依赖项添加到项目中,需要实例化一个ObjectMapper,这个项目就是jackson-databind。

如果你使用的是Spring Boot,你通常可以只使用@Autowire ObjectMapper。ObjectMapper可以用来创建对象的JSON形式表示。

String value = mapper.writeValueAsString(book);

将得到类似这样的字符串,

{“title”:”Learning Spring Boot”,”authors”:[“Greg L. Turnquist”],”publisher”:{“name”:”Packt”,”country”:”UK”}}

然后你可以使用Elasticsearch客户端界面为结果进行索引。

Java开发者:Elasticsearch索引JavaBeans的简单方式,你会用吗?

在检索文档时,您可以使用readValue方法再次创建Java对象。

Java开发者:Elasticsearch索引JavaBeans的简单方式,你会用吗?

甚至不需要再创建一个Java对象,当你只在模板中显示结果时,只需传入生成文档的map就足够了

Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();

由于Elasticsearch在任何地方都使用了JSON,所以使用通用库进行序列化非常容易,无论是Java还是其他编程语言。

文章来源:智云一二三科技

文章标题:Java开发者:Elasticsearch索引JavaBeans的简单方式,你会用吗?

文章地址:https://www.zhihuclub.com/179437.shtml

关于作者: 智云科技

热门文章

网站地图