我是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是可以为您做到这一点的众多流行图书馆之一。
您上面显示的代码将创建一个索引。现在要将文档添加到该索引,请运行类似的内容。
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一次为多个项目建立索引。一旦对象变得更加复杂,就需要创建Mappings。
我在《指南》中找到了很多很好的例子,但在ES Google Group中通常会找到更详细的例子。
我也必须推荐Head前端。它向您显示现有索引和项目。