elasticsearch将对象插入索引
我是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时,很难获得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前端。 它显示了现有的索引和项目。
- 使用elasticsearch对文本进行分类
- 使用Java客户端和X-Pack / HTTPS连接到ElasticSearch Cloud 5.x.
- 如何通过Java API重新索引ElasticSearch
- 直接自引用导致循环exception
- ElasticSearch Java API:NoNodeAvailableException:没有可用的节点
- 使用Java在Elasticsearch中按查询更新
- 如何在内部java api或jest api中获取弹性搜索索引的类型名称
- Elasticsearch的Liquibase或Flyway数据库迁移替代方案
- 在弹性搜索高级客户端中为JAVA添加身份validation