我是 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,这虽然可能不是我的理想情况。
如果我对它的工作原理(架构上)有误解,请告诉我,我是来学习的!
干杯,
抢
我认为你走在正确的道路上。当您不习惯 Java API 时,有时可能很难获得它。我想随着时间的推移,情况会变得更好。
您必须将对象转换为 Json 才能将它们发送到 ElasticSearch 集群。Gson http://code.google.com/p/google-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();
查看批量请求 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-bulk.html用于同时索引多个项目。一旦你的对象变得更加复杂,你就需要创建Mappings http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping.html.
我发现了很好的例子Guide http://www.elasticsearch.org/guide/,但通常更详细的例子在ES谷歌集团 https://groups.google.com/group/elasticsearch.
我必须推荐一下Head https://github.com/mobz/elasticsearch-head前端也是如此。它向您显示现有的索引和项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)