elasticsearch java 增删改查的简单实例

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

引入的头文件:

?


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公众号进行关注。

时间: 2025-01-15 04:41:34

elasticsearch java 增删改查的简单实例的相关文章

Redis之java增删改查

jedis是java的redis客户端实现,要使用jedis需要添加jedis的maven依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.4.2</version> </dependency>redis最简单的使用:Jedis jedis = new Jedis("l

JAVA增删改查XML文件

最近总是需要进行xml的相关操作. 不免的要进行xml的读取修改等,于是上网搜索,加上自己的小改动,整合了下xml的常用操作. 读取XML配置文件 首先我们需要通过DocumentBuilderFactory获取xml文件的工厂实例. DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); dbf.setIgnoringElementContentWhitespace(true); 创建文档对象 1 DocumentBui

C# 对MongoDB 进行增删改查的简单操作

C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 下载地址:https://github.com/mongodb/mongo-csharp-driver/downloads 1,连接数据库 /// <summary> /// 数据库连接 /// </summary> private const string conn = "mongodb://127.0.0

easyui datagrid java增删改查 动态补全

猛击-->   easyui datagrid 增删改查 动态补全 easyui datagrid java增删改查 动态补全,布布扣,bubuko.com

java程序设计课期中考试——数据库的增删改查和简单的js界面

首先是设计思路,对于数据库的增删改查,我们借助Ecilipse来进行前端和后端的编写.Ecilipse是可以进行java web项目的操作的. 前端,我们选择用使用jsp,所谓的jsp就是可以嵌入其他语言的html,各种标识语言和html语法一致,但为了在本界面检测各种信息的正确性,需要嵌入java的语句进行判断. 对于数据库的增删改查,我们使用sql语句,并且导入了相应的mysql的jar包,方便我们用java对数据库进行操作. 整体来说,我们编写使用了MVC模式(model-view-con

初学nodejs一星期 做了一套mongoose + express最新版的增删改查 很简单实用 希望大家一起成长

这周周一才开始学的nodejs 目前正好学习了5天 应该算是个菜鸟 期间遇到了很多意想不到的坑 看了很多视频和很多nodejs教材 它们的内容都太老了 都是2011~2013年的资料 很多语句 模块 代码 框架都是用不了的 一大堆坑 经过本人各种踩坑 补坑 终于弄出了一套很简单 很实用的express最新版+mongoose 的增删改查 对新手很有帮助 代码是2015.4.30刚做出来的 最新的坑我都踩完了 只要按这代码写的代码 应该是没问题 之所以要做一套增删改查 是因为我觉得学一门语言 增删

纯Java增删改查

//自己写的一个完整的带增删改查提交重置功能的表单代码.package com.l16.test5;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.a

增删改查(简单版&amp;连接数据库)

项目总述:这个增删改查我以,选课名称,选课教室,选课教师基本信息,作为主要的信息来源.主要对这些信息最基本的增删改查 详细的分析与说明: 1.首先在src文件里定义四个包,com.bean(定义类),com.dao(对数据进行处理,书写增删改查的函数),com.db(用于连接数据库),com.servlet(用于接受jsp中传输的值,并对其进行判断处理) 相关代码展示: Bean.java: package com.bean; public class Bean { private String

数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋','男','1980/6/15') 1.2[将现有表数据添加到一个已有表]insert into <已有的新表> (列名) select <原表列名> from <原表名>例:insert into tongxunlu ('姓名','地址','