elasticsearch java 增删改查 版本1

简介: 既然是开发篇,主要以代码为主,辅助一些说明。所有的内容都是代码实际应该验证过的。 引入的头文件: import static org.elasticsearch.node.NodeBuilder.nodeBuilder; import java.io.IOException;import java.net.InetAddress;import java.util

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

引入的头文件:

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


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
3月前
|
安全 架构师 Java
Java LTS版本进化秀:从8到21的欢乐升级之旅
困惑于Java版本选择?轻松幽默地穿越Java LTS版本时光隧道,掌握从Java 8到21的关键特性。通过一家初创公司的系统升级故事,直观了解每个版本如何解决代码冗余、性能瓶颈等开发痛点,助你在技术选型中做出明智决策。
|
4月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
885 0
|
5月前
|
安全 Java API
Java 17 及以上版本核心特性在现代开发实践中的深度应用与高效实践方法 Java 开发实践
本项目以“学生成绩管理系统”为例,深入实践Java 17+核心特性与现代开发技术。采用Spring Boot 3.1、WebFlux、R2DBC等构建响应式应用,结合Record类、模式匹配、Stream优化等新特性提升代码质量。涵盖容器化部署(Docker)、自动化测试、性能优化及安全加固,全面展示Java最新技术在实际项目中的应用,助力开发者掌握现代化Java开发方法。
268 1
|
10月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
499 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
7月前
|
JavaScript Java 关系型数据库
家政系统源码,java版本
这是一款基于SpringBoot后端框架、MySQL数据库及Uniapp移动端开发的家政预约上门服务系统。
227 6
家政系统源码,java版本
|
缓存 Java 关系型数据库
【Java面试题汇总】ElasticSearch篇(2023版)
倒排索引、MySQL和ES一致性、ES近实时、ES集群的节点、分片、搭建、脑裂、调优。
【Java面试题汇总】ElasticSearch篇(2023版)
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
212 3
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
634 2
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
Java Linux Windows
如何查看已安装的 Java 版本
要查看已安装的 Java 版本,打开命令提示符或终端,输入 `java -version`,回车后即可显示当前系统中 Java 的版本信息。
4438 1
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
951 1