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


优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/70055

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。