日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

在Elasticsearch中索引Java Bean的简单方法

發布時間:2023/12/3 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Elasticsearch中索引Java Bean的简单方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在數據存儲方面,Java程序員習慣于使用魔術般持久的Java Bean。 諸如Hibernate和用于關系數據存儲的JPA規范或Morphia和Spring Data MongoDB之類的解決方案是受歡迎的示例。

使用Elasticsearch的開發人員有時也有相同的愿望–傳遞Java bean并對其進行自動索引。 提供了適用于Elasticsearch的Spring Data實現,但是這可能對您來說是開銷,或者您的Elasticsearch版本不支持。 還有一個Jest ,它使用支持直接存儲Java Bean的HTTP API。

如果您想使用標準的Java客戶端(針對Elasticsearch)執行相同的操作,則沒有對此的直接支持,但是可以輕松地手動實現。

假設您要保留代表一本書的以下簡單對象結構。

Publisher publisher = new Publisher(); publisher.setCountry("UK"); publisher.setName("Packt"); Book book = new Book(); book.setTitle("Learning Spring Boot"); book.setAuthors(Arrays.asList("Greg L. Turnquist")); book.setPublisher(publisher);

經常會發生的情況是,我們在認真思考一種解決問題的方法,以至于看不到更簡單的方法。 我們不需要Elasticsearch的特殊框架。 Elastcsearch將為您愉快地存儲大多數JSON結構。 幸運的是,使用Jackson或GSON之類的庫從Java對象創建JSON文檔是一個已解決的問題。

我們可以簡單地在項目中添加一個依賴項(在這種情況下,將其添加到jackson-databind) ,并實例化一個ObjectMapper。

ObjectMapper mapper = new ObjectMapper();

如果您使用的是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客戶端界面為結果建立索引。

IndexResponse response = client.prepareIndex(indexName, "book").setSource(value).execute().actionGet();

檢索文檔時,可以使用readValue方法再次創建Java對象。

GetResponse getResponse = client.prepareGet(indexName, "book", response.getId()).execute().actionGet(); String source = getResponse.getSourceAsString(); Book persistedBook = mapper.readValue(source, Book.class); assertEquals("Packt", persistedBook.getPublisher().getName());

甚至更好:也許您甚至不需要再次創建Java對象? 當您僅在模板中顯示結果時,僅傳遞結果文檔的Map就足夠了嗎?

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

有時,當我們甚至不需要復雜的解決方案時,他們也在尋找它們。 由于Elasticsearch到處都使用J??SON,因此使用Java或其他語言的通用庫進行序列化非常容易。

翻譯自: https://www.javacodegeeks.com/2016/07/simple-way-index-java-beans-elasticsearch.html

總結

以上是生活随笔為你收集整理的在Elasticsearch中索引Java Bean的简单方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。