Elasticsearch5.2.1的文档API操作
来源:互联网 发布:淘宝邻家好货怎么设置 编辑:程序博客网 时间:2024/06/16 11:14
文档API
单文档API
- 创建索引
- 获取索引
- 删除索引
- 更新索引
多文档API
- 获取多个文档
- 批量操作
- 通过查询API删除文档
- 通过查询API更新文档
- 重建索引
所有的CRUD API都是单个索引的api。索引只接收一个索引名称,或者一个指向某个具体索引的索引别名。
下面的操作都可以通过kibana中的dev-tool来完成,如下图
创建索引
PUT twitter/tweet/1{ "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch"}
响应结果:
{ "_shards" : { "total" : 2, #在几个分片中进行查找(包括主分片和复制分片) "failed" : 0, #查询失败的分片数 "successful" : 2 #查询成功的分片数 }, "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_version" : 1, "created" : true, "result" : created}
动态创建索引
当我们在创建一个文档的时候,elasticsearch或默认帮我们创建索引和类型。索引类型的模式非常灵活,当我们新增一个字段的时候,会默认帮我们添加一个类型映射。(基本数据类型可以采用这个方法)
我们能够关闭索引的自动创建,我们只需要在配置文件(elasticsearch.yaml)中修改如下配置(集群中的所有配置必须保持一致):
action.auto_create_index : false
当然我们也能够关闭类型的自动创建,也只需要增加一个配置即可:
ndex.mapper.dynamic : false
其中,更为灵活的是,我们可以通过一个匹配模式来设定自定义的自动索引创建,比如:
action.auto_create_index :+aaa*,-bbb*,+ccc*,-(+表示允许,-表示不允许,表示前缀后缀匹配)
创建索引的java实现
因为版本的升级,maven引入依赖的jar包也发生了变化,我们需要引入下面两个pom:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.1</version></dependency><dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>5.2.1</version></dependency>
创建client
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
我们对比发现,我们之前都是直接创建TransportClient的示例,但是这个类在5.2版本就变成一个抽象类。所以只能示例它的子类PreBuiltTransportClient。
如果我们想创建一个文档,elasticsearch给我们提供了四种方式来构建一个文档的途径:
- 手动拼接一个json字符串
- 使用map来添加内容,然后将map转换成json
- 使用第三方json工具包,如jackson将对应的bean转换成json
- 使用elasticsearch内置的XContentFactory来构建json
下面是四种方式的具体实现
@Before public void setUp() throws UnknownHostException { TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); } @Test public void testUseJsonStr() { String json = "{" + "\"user\":\"kimchy\"," + "\"postDate\":\"2013-01-30\"," + "\"message\":\"trying out Elasticsearch\"" + "}"; client.prepareIndex("twitter", "tweet", "1") .setSource(json) .get(); } @Test public void testUseMap(){ Map<String, Object> json = new HashMap<String, Object>(); json.put("user","kimchy"); json.put("postDate",new Date()); json.put("message","trying out Elasticsearch"); client.prepareIndex("twitter", "tweet", "2") .setSource(json) .get(); } @Test public void testUseXContentFactory() throws IOException { IndexResponse response = client.prepareIndex("twitter", "tweet", "3") .setSource( XContentFactory.jsonBuilder() .startObject() .field("user", "kimchy") .field("postDate", new Date()) .field("message", "trying out Elasticsearch") .endObject() ) .get(); } @Test public void testUseJackson() throws JsonProcessingException { Tweet tweet = new Tweet("kimchy",new Date(),"trying out Elasticsearch"); ObjectMapper mapper = new ObjectMapper(); byte[] json = mapper.writeValueAsBytes(tweet); client.prepareIndex("twitter", "tweet", "4") .setSource(json) .get(); } class Tweet{ private String user; private Date postDate; private String message; public String getUser() { return user; } public void setUser(String user) { this.user = user; } public Date getPostDate() { return postDate; } public void setPostDate(Date postDate) { this.postDate = postDate; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Tweet(String user, Date postDate, String message) { this.user = user; this.postDate = postDate; this.message = message; } }
1 0
- Elasticsearch5.2.1的文档API操作
- Elasticsearch5.4 Java API操作
- elasticsearch5.4的java api
- Elasticsearch5.0新的API规范
- API文档 、 字符串基本操作
- elasticsearch5 官方文档整理。。。。中
- Elasticsearch5 JAVA API数据遍历
- API文档的写法
- API文档的下载
- api文档的安装
- ElasticSearch5.6.1索引、类型、文档的增删查改--利用RESTful接口和Kibana可视化工具
- ElasticSearch5.0的安装
- 【JavaSE】day01_ API文档 、 字符串基本操作
- 通过HTTP RESTful API 操作elasticsearch文档
- SE01 Unit01 API文档 、 字符串基本操作
- elasticsearch5.2.1 环境搭建
- elasticsearch5.2.1安装
- Sun 的Servlet API 文档
- 将ubuntu系统终端中显示的路径缩短
- SwaggerUI ASP.Net WebAPI2
- CS0246号错误是什么
- 高阶篇:4)可靠性设计
- 【Maven in action】解决办法:Project configuration is not up-to-date with pom.xml. Run project ...
- Elasticsearch5.2.1的文档API操作
- java enum(枚举)使用详解 + 总结
- 电脑强制重启 androidstudio 插件全部消失问题
- ArrayList源码解析
- java错误-junit
- ios开发屏幕旋转锁定时判断设备的方向
- Grails中的约定
- sqlalchemy 关联数据的添加和查询,转成json
- 用Java实现拷贝文本文件