首页 > 编程语言 >ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作

ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作

时间:2023-03-07 09:00:55浏览次数:53  
标签:Java SpringBoot -- 全文检索 client ElasticSearch 待发布 分词

目录

ElasticSearch 实现分词全文检索 - 概述
ElasticSearch 实现分词全文检索 - ES、Kibana、IK安装
ElasticSearch 实现分词全文检索 - Restful基本操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 文档操作
ElasticSearch 实现分词全文检索 - 测试数据准备 --待发布
ElasticSearch 实现分词全文检索 - term、terms查询 --待发布
ElasticSearch 实现分词全文检索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查询 --待发布
ElasticSearch 实现分词全文检索 - Scroll 深分页 --待发布
ElasticSearch 实现分词全文检索 - delete-by-query --待发布
ElasticSearch 实现分词全文检索 - 复合查询 --待发布
ElasticSearch 实现分词全文检索 - filter查询 --待发布
ElasticSearch 实现分词全文检索 - 高亮查询 --待发布
ElasticSearch 实现分词全文检索 - 聚合查询 cardinality --待发布
ElasticSearch 实现分词全文检索 - 经纬度查询 --待发布

Java 连接 ES

添加依赖,版本号要和安装的版本一致
image

<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client -->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.9.3</version>
</dependency>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.10</version>
</dependency>

ESClient.java 连接类

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;

public class ESClient {

    public static RestHighLevelClient getClient(){
        //创建HttpHost对象
        HttpHost httpHost = new HttpHost("172.16.3.88",9200);

        //创建RestClientBuilder
        RestClientBuilder clientBuilder= RestClient.builder(httpHost);

        //创建RestHighLevelClient
        RestHighLevelClient client = new RestHighLevelClient(clientBuilder);

        return client;
    }
}

创建索引

SpringBoot 创建 ES 索引

@Test
void createIndex() throws Exception{
    String indexName="person";
    RestHighLevelClient client = ESClient.getClient();
    //1. 准备索引的 settings
    Settings.Builder settings = Settings.builder()
            .put("number_of_shards", 3)
            .put("number_of_replicas", 1);

    //2. 准备索引的结构 Mappings
    XContentBuilder mappings = JsonXContent.contentBuilder()
            .startObject()
                .startObject("properties")
                    .startObject("name")
                        .field("type","text")
                    .endObject()
                    .startObject("age")
                        .field("type","integer")
                    .endObject()
                    .startObject("birthday")
                        .field("type","date")
                        .field("format","yyyy-MM-dd")
                    .endObject()
                .endObject()
            .endObject();

    //3. 将 Settings 和 Mappings 封装到一个Request 对象中
    CreateIndexRequest request = new CreateIndexRequest(indexName)
            .settings(settings)
            .mapping(mappings);

    //4. 通过 client 对象去连接ES并执行创建索引
    CreateIndexResponse resp = client.indices().create(request, RequestOptions.DEFAULT);

    //5. 输出
    System.out.println("resp:"+resp.toString());
}

image

检查索引

@Test
void exists() throws Exception {
    String indexName = "person";
    RestHighLevelClient client = ESClient.getClient();

    //准备 request 对象
    GetIndexRequest request = new GetIndexRequest(indexName);

    //通过client去操作
    boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);

    System.out.println("exists => " + exists);
}

删除索引

@Test
void delete() throws Exception {

    String indexName = "person";
    RestHighLevelClient client = ESClient.getClient();

    //准备 request 对象
    DeleteIndexRequest request = new DeleteIndexRequest(indexName);

    //通过client去操作
    AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);

    System.out.println("delete => " + delete);
}

标签:Java,SpringBoot,--,全文检索,client,ElasticSearch,待发布,分词
From: https://www.cnblogs.com/vipsoft/p/17150157.html

相关文章

  • JavaSE——转型与instanceof关键字
    为什么要转型多态的写法就无法访问子类独有功能了。当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥有,而父类没有的方......
  • java.time
    一、接口1.TemporalAccessor定义了时间类型的基本操作,包括获取数值范围(如月是1-12),获取指定(比如,年,月,日)的值。2.Temporal定义了时间的加减3.TemporalAmount......
  • JavaWeb中文乱码问题
    概述在JavaWeb中通过请求(request)和响应(response)来进行数据传递的过程中,有一个不可避免的问题,即传输的数据中有可能包含中文。当传输的数据中包含中文时,往......
  • Java 基本数据类型变量间运算规则
    在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的值经常需要进行相互转换。转换的方式有两种:自动类型提升和强制类型转换。自动类型提升规则:将取值范围小(......
  • 3_Java并发
    Java并发面试题汇总一.多线程基础1.创建线程的三种方式的对比?采用实现Runnable或Callable接口的方式创建多线程优点:可以继承其他类,并且多个线程可以共享同一个targe......
  • 2_Java集合
    Java集合面试题汇总1.常见的集合有哪些?Java的集合类主要由两个根接口Collection和Map派生出来的。Collection:List:代表有序可重复集合,可直接根据元素的索引来访问Se......
  • 1_JavaSE
    JavaSE面试题汇总1.访问修饰符public、private、protected、以及不写(默认)时的区别?public是所有类可见;protected是同一包内及其所有子类可见;默认是同一包内可见;priva......
  • JavaSE——面向对象三大特征之—多态
    多态的形式多态是继封装、继承之后,面向对象的第三大特性。多态是出现在继承或者实现关系中的。多态体现的格式:父类类型变量名=new子类/实现类构造器;变量名.方法......
  • SpringBoot SSM vue课程作业在线批阅系统
    SpringBootSSMvue课程作业在线批阅系统登录新闻公告在线留言课程管理指定课代表作业下发作业审批评分在线预览使用技术:SpringBoot或SSM +Mybatis+Mysql......
  • java部分底层原理了解
    Java内存分配其中在JVM虚拟机中jvm的内存分为五个部分:这个只是在JDK之前的JVM内存图在JDK8开始:取消了方法区,增加了元空间,把原来的方法区的多种功能进行拆分,有的功能......