码迷,mamicode.com
首页 > 编程语言 > 详细

elasticsearch java 增删改查的简单实例

时间:2016-05-08 23:50:33      阅读:651      评论:0      收藏:0      [点我收藏+]

标签:

    既然是开发篇,主要以代码为主,辅助一些说明。所有的内容都是代码实际应该验证过的。

引入的头文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
 
import java.io.IOException;
import java.net.InetAddress;
import java.util.Date;
import java.util.Map;
import java.util.Set;
 
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.ClusterAdminClient;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.cluster.health.ClusterIndexHealth;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.node.Node;
import static org.elasticsearch.common.xcontent.XContentFactory.*;

创建索引

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
XContentBuilder mapping = XContentFactory.jsonBuilder()
    .startObject()
        .startObject("settings")
          .field("number_of_shards"1)//设置分片数量
          .field("number_of_replicas"0)//设置副本数量
        .endObject()
    .endObject()
    .startObject()
        .startObject(type)//type名称
            .startObject("properties"//下面是设置文档列属性。
               .startObject("type").field("type""string").field("store""yes").endObject()
               .startObject("eventCount").field("type""long").field("store""yes").endObject()
               .startObject("eventDate").field("type""date").field("format""dateOptionalTime").field("store""yes").endObject()
               .startObject("message").field("type""string").field("index""not_analyzed").field("store""yes").endObject()
            .endObject()
        .endObject()
    .endObject();
                        
CreateIndexRequestBuilder cirb = client
        .admin()
        .indices()
        .prepareCreate(indexName)//index名称
        .setSource(mapping);
 
CreateIndexResponse response = cirb.execute().actionGet();
if (response.isAcknowledged()) {
    System.out.println("Index created.");
else {
    System.err.println("Index creation failed.");
}

增加文档

1
2
3
4
5
6
7
8
9
10
11
12
IndexResponse response = client
        .prepareIndex(indexName, type, "1")
        .setSource(//这里可以直接用json字符串
                jsonBuilder().startObject()
                    .field("type""syslog")
                    .field("eventCount"1)
                    .field("eventDate"new Date())
                    .field("message""secilog insert doc test")
                .endObject()).get();
System.out.println("index:"+response.getIndex()
        +" insert doc id:"+response.getId()
        +" result:"+response.isCreated());

查询文档

1
2
3
4
5
6
GetResponse response = client.prepareGet("secilog""log""1").get();
String source = response.getSource().toString();
long version = response.getVersion();
String indexName = response.getIndex();
String type = response.getType();
String id = response.getId();

本文由赛克蓝德(secisland)原创,转载请标明作者和出处。

修改文档

修改文档有两种方式,一种是直接修改,另一种是如果文档不存在则插入存在则修改。

第一种代码

1
2
3
4
5
6
7
8
9
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(indexName);
updateRequest.type(type);
updateRequest.id("1");
updateRequest.doc(jsonBuilder()
        .startObject()
            .field("type""file")
        .endObject());
client.update(updateRequest).get();

第二种代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IndexRequest indexRequest = new IndexRequest(indexName, type, "3")
.source(jsonBuilder()
    .startObject()
        .field("type""syslog")
        .field("eventCount"2)
        .field("eventDate"new Date())
        .field("message""secilog insert doc test")
    .endObject());
UpdateRequest updateRequest = new UpdateRequest(indexName, type, "3")
    .doc(jsonBuilder()
        .startObject()
            .field("type""file")
        .endObject())
    .upsert(indexRequest);              
client.update(updateRequest).get();

删除文档

1
2
DeleteResponse dresponse = client.prepareDelete("secilog""log""4").get();
boolean isFound = dresponse.isFound(); //文档存在返回true,不存在返回false;

删除索引

1
2
DeleteIndexRequest delete = new DeleteIndexRequest("secilog");
client.admin().indices().delete(delete);

    赛克蓝德(secisland)后续会逐步对Elasticsearch的最新版本的各项功能进行分析,近请期待。也欢迎加入secisland公众号进行关注。

elasticsearch java 增删改查的简单实例

标签:

原文地址:http://www.cnblogs.com/bmaker/p/5472054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!