当前位置:  开发笔记 > 编程语言 > 正文

elasticsearch将对象插入索引

如何解决《elasticsearch将对象插入索引》经验,为你挑选了1个好方法。

我是elasticsearch的新手,并且正在寻找使用Java API的一些帮助.我有一些域对象例如

@XmlRootElement

public class BasicActivity {

private String activityName;
private FullActivity activity;  
// Getters and setters
}

我创建了一个连接到节点的传输客户端

Client client = new TransportClient()
        .addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));

有没有简单的方法将我的对象直接插入elasticsearch?

我见过这个

IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
                    .setSource(jsonBuilder()
                                .startObject()
                                    .field("user", "kimchy")
                                    .field("postDate", new Date())
                                    .field("message", "trying out Elastic     Search")
                                .endObject()
                              )
                    .execute()
                    .actionGet();

但要做到这一点,我必须将每个对象转换为json,尽管这可能不是我理想的情况.

如果我对它的工作方式(架构上)有误解,请告诉我,我在这里学习!

欢呼,罗布



1> Andy..:

我认为你走在正确的轨道上.当您不习惯Java API时,很难获得Java API.我想随着时间的推移它会变得更好.

您必须将对象转换为Json才能将它们发送到ElasticSearch集群. Gson是众多受欢迎的图书馆之一,可以为您做到这一点.

您在上面显示的代码将创建一个索引.现在要向该索引添加文档,运行类似这样的操作.

   Tweet tweet = new Tweet();
   tweet.setId("1234");
   tweet.setMessage("message");

   IndexRequest indexRequest = new IndexRequest("twitter","tweet", tweet.getId());
   indexRequest.source(new Gson().toJson(tweet));
   IndexResponse response = client.index(indexRequest).actionGet();

查看BulkRequest一次索引多个项目.一旦您的对象变得更复杂,您将需要创建映射.

我在" 指南"中找到了很好的例子,但通常在ES Google Group中有更详细的例子.

我也要推荐Head前端.它显示了现有的索引和项目.


杰克逊是另一个Json图书馆,在性能方面似乎与Gson相比毫不逊色.http://jackson.codehaus.org/Tutorial
推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有