elasticsearch java 增删改查 版本1

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

引入的头文件:

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.*;

创建索引

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.");
}

增加文档

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());

查询文档

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();

修改文档

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

第一种代码

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();

第二种代码:

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();

删除文档

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

删除索引

DeleteIndexRequest delete = new DeleteIndexRequest("secilog");
client.admin().indices().delete(delete);
时间: 2024-09-26 18:27:24

elasticsearch java 增删改查 版本1的相关文章

JAVA增删改查XML文件

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

MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查

上节已经学会对MySQL进行简单的增删改查了,那么,我们如何实现用Java来对数据库操作增删改呢. 本节将用Java演示对MySQL进行增删改查. 简单的来说,分为4个步骤: 1.加载连接器(驱动)   通过Driver类 (最好用类反射来加载,更加灵活) 2.建立与数据库的连接 3.获取语句对象 4.对数据库进行操作(增删改查) 其实第一步现在可以不用写了,高版本的MySQL已经在内部帮我们写好了第一步,但是,为了兼容性更好(兼容低版本的MySQL)我们最好还是写上第一步. 我们先看一下原数据

Elasticsearch增删改查 之 —— Get查询

GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理,一般默认是1秒钟吧...才能搜索到.合理利用这些方法,可以更灵活的使用Elasticsearch. 更多内容参考ELK教程 阅读这篇文档,发现自己对很多地方不是很理解.比如存储机制.版本维护等等.暂时先做为阶段性的学习吧...后续更新在回来补补.... 查询样例 Get API允许基于ID字段从Ela

Elasticsearch增删改查 之 —— Delete删除

删除文档也算是常用的操作了...如果把Elasticsearch当做一款普通的数据库,那么删除操作自然就很常用了.如果仅仅是全文检索,可能就不会太常用到删除. Delete API 删除API,可以根据特定的ID删除文档. $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1' 会返回下面的消息: { "_shards" : { "total" : 10, "failed" : 0, &qu

java web实现增删改查后,应该学习哪些高级技术?

问题描述 java web实现增删改查后,应该学习哪些高级技术? 做了个小项目,实现了curd,想继续往缓存,并发,负载高级深入,请推荐一个详细的高级技术路线?最好有书 解决方案 javaweb深入浅出,不过这个方向研究,主要还是在公司里学的会更实用些 解决方案二: 多线程,Socket,I/O JSP.EL.JSTL,AJAX JavaScript,jQuery JSON,XML EJB(可忽略) 各种框架 ......太多了 解决方案三: 多线程,Socket,I/O JSP.EL.JSTL

新手 基础-用java在用户的增删改查中遇到的问题

问题描述 用java在用户的增删改查中遇到的问题 final static String的意义try{}catch的用法Connection conn = DriverManager.getConnection的意义关于这一段boolean用法的正确与否public boolean addUser(User newUser){ boolean flag=false; String addUserSQL=""INSERT INTO Users(UserNamePassword) VALU

HDFS Java代码进行增删改查

提醒:如果要在idear或者eclipse等IDE下运行就必须在HDFS上给你所使用的目录分配权限给windows下的用户,为了方便起见建议给所有权限777 创建目录命令 hdfs dfs -mkdir myproject 分配权限命令 hdfs dfs -chmod 777 myproject HDFS增删改查工具类 package hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Fi

JAVA访问数据库之增删改查(CRUD)

上一篇博客介绍了如何使用JAVA连接数据库,那么这一篇将继续为大家介绍如何使用JDBC对数据库的增删改查(CRUD)操作. 这一篇博客中的示例将使用上一篇中生成的H2数据库文件. 查询 查询在数据库的操作中是很重要的,我们把数据保存在数据库中,就是为了我们在需要的时候能够快速.高效的查询出来. /** * 查询 * * @throws Exception */ public void query() throws Exception { Connection conn = getConnecti

告别无止境的增删改查--Java代码生成器

转自:http://www.cnblogs.com/zhuYears/archive/2012/02/29/2373491.html 告别无止境的增删改查--Java代码生成器   有感于马上要做个比较大的业务系统,想到那无止境的增删改查.粘贴复制,顿时脑后升起一阵凉风.于是想到个找或者写一个Java代码的生成器,这样在正常开发进度下,也能余下更多的时间去做些别的事情. 闲话少说,首先总结下需求: 我需要的这个工具能够读取数据库表结构,通过对字段类型.名称等分析得到需要的各种变量,根据模板生成相