• 【java_wxid项目】【第十三章】【Elasticsearch集成】


    主项目链接:https://gitee.com/java_wxid/java_wxid
    项目架构及博文总结:

    项目模块:
    前期规划,实现部分

    java_wxid   
    ├── demo                                                            // 演示模块
    │     └── 模块名称:apache-mybatis-demo模块                            //Apache Mybatis集成(已实现并有博文总结)
    │     └── 模块名称:apache-shardingsphere-demo模块                     //Apache ShardingSphere集成(已实现并有博文总结)
    │     └── 模块名称:design-demo模块                                    //设计模式实战落地(已实现并有博文总结)
    │     └── 模块名称:elasticsearch-demo模块                             //ElasticSearch集成(已实现并有博文总结)
    │     └── 模块名称:mongodb-demo模块                                   //MongoDB集成(已实现并有博文总结)
    │     └── 模块名称:redis-demo模块                                     //Redis集成(已实现并有博文总结)
    │     └── 模块名称:spring-boot-demo模块                               //Spring Boot快速构建应用(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-alibaba-nacos-demo模块                //Spring Cloud Alibaba Nacos集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-alibaba-seata-demo模块                //Spring Cloud Alibaba Seata集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-alibaba-sentinel-demo模块             //Spring Cloud Alibaba Sentinel集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-gateway-demo模块                      //Spring Cloud Gateway集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-hystrix-demo模块                      //Spring Cloud Hystrix集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-open-feign-demo模块                   //Spring Cloud Open Feign集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-ribbon-demo模块                       //Spring Cloud Ribbon集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-security-oauth2-demo模块              //Spring Cloud Security Oauth2集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-security-oauth2-sso-client-demo模块   //Spring Cloud Security Oauth2集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-skywalking-demo模块                   //Spring Cloud Skywalking集成(已实现并有博文总结)
    │     └── 模块名称:spring-cloud-stream-demo模块                       //Spring Cloud Stream集成(已实现并有博文总结)
    │     └── 模块名称:swagger-demo模块                                   //springfox-swagger2集成(已实现并有博文总结)
    │     └── 模块名称:xxl-job模块                                        //xxl-job集成(已实现并有博文总结)
    │     └── 模块名称:apache-spark-demo模块                              //Apache Spark集成
    │     └── 模块名称:etl-hdfs-hive-hbase-demo模块                       //ETL、HDFS、Hive、Hbase集成
    │     └── 模块名称:ddd-mode-demo模块                                  //DDD领域设计
    │     └── 模块名称:netty-demo模块                                     //Netty集成
    │     └── 模块名称:vue-demo模块                                       //前端vue集成
    ├── document                                                        // 文档
    │     └── JavaKnowledgeDocument                                     //java知识点
    │           └── java基础知识点.md                     
    │           └── mq知识点.md
    │           └── mysql知识点.md
    │           └── redis知识点.md
    │           └── springcould知识点.md
    │           └── spring知识点.md
    │     └── FounderDocument                                           //创始人
    │           └── 创始人.md
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    系列文章:快速集成各种微服务相关的技术,帮助大家可以快速集成到自己的项目中,节约开发时间。
    提示:系列文章还未全部完成,后续的文章,会慢慢补充进去的。

    准备工作

    创建一个新的虚拟机,文章地址:https://blog.csdn.net/java_wxid/article/details/127132378

    安装Elasticsearch

    下载软件安装包:
    链接:https://pan.baidu.com/s/1XRGHX9lqF21k0gaaHv8ReA?pwd=2022
    提取码:2022
    –来自百度网盘超级会员V2的分享
    安装es可能会出现的错误解决办法:https://blog.csdn.net/ADCadc123456789/article/details/104806771

    创建普通用户

    ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。

    创建一个es专门的用户(必须)
    使用root用户在服务器执行以下命令

    先创建组, 再创建用户:
    1)创建 elasticsearch 用户组

    groupadd elasticsearch
    
    • 1

    2)创建用户 liaozhiwei 并设置密码

    useradd liaozhiwei
    passwd liaozhiwei
    
    • 1
    • 2

    3)# 创建es文件夹,
    并修改owner为 liaozhiwei用户

    mkdir -p /usr/local/es
    
    • 1

    4)用户es 添加到 elasticsearch 用户组

    usermod -G elasticsearch liaozhiwei
    
    • 1

    先上传安装包elasticsearch-7.6.1-linux-x86_64.tar.gz进行解压,解压目录为/usr/local/es,然后授权

    tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz
    chown -R liaozhiwei /usr/local/es/elasticsearch-7.6.1
    
    • 1
    • 2

    5)设置sudo权限
    #为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
    #三台机器使用root用户执行visudo命令然后为es用户添加权限

    visudo
    
    • 1

    #在root ALL=(ALL) ALL 一行下面
    #添加liaozhiwei用户 如下:

    liaozhiwei ALL=(ALL) ALL
    
    • 1

    #添加成功保存后切换到liaozhiwei用户操作
    [root@localhost ~]# su liaozhiwei
    [liaozhiwei@localhost root]$

    上传压缩包并解压

    将es的安装包下载并上传到服务器的/user/local/es路径下,然后进行解压
    使用liaozhiwei用户来执行以下操作,将es安装包上传到指定服务器,并使用es用户执行以下命令解压。

    su root
    cd /usr/local/es/
    sudo chmod 777 elasticsearch-7.6.1-linux-x86_64.tar.gz 
    tar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /usr/local/es/
    
    • 1
    • 2
    • 3
    • 4
    修改配置文件
    修改elasticsearch.yml

    进入服务器使用baiqi用户来修改配置文件

    cd /usr/local/es/elasticsearch-7.6.1/config
    mkdir -p /usr/local/es/elasticsearch-7.6.1/log
    mkdir -p /usr/local/es/elasticsearch-7.6.1/data
    rm -rf elasticsearch.yml
    vim elasticsearch.yml
    
    
    cluster.name: liaozhiwei-es
    node.name: node1
    path.data: /usr/local/es/elasticsearch-7.6.1/data
    path.logs: /usr/local/es/elasticsearch-7.6.1/log
    network.host: 192.168.160.128
    http.port: 9200
    discovery.seed_hosts: ["192.168.160.128"]
    cluster.initial_master_nodes: ["node1"]
    bootstrap.system_call_filter: false
    bootstrap.memory_lock: false
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    xpack.security.enabled: true
    xpack.license.self_generated.type: basic
    xpack.security.transport.ssl.enabled: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    修改jvm.option

    修改jvm.option配置文件,调整jvm堆内存大小。
    node1.liaozhiwei.cn使用liaozhiwei用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整。

    cd /usr/local/es/elasticsearch-7.6.1/config
    vim jvm.options
    -Xms2g
    -Xmx2g
    
    • 1
    • 2
    • 3
    • 4
    修改系统配置,解决启动时候的问题

    由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚。

    普通用户打开文件的最大数限制

    问题错误信息描述:
    max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错,三台机器使用baiqi用户执行以下命令解除打开文件数据的限制。

    sudo vi /etc/security/limits.conf
    
    • 1

    添加如下内容: 注意*不要去掉了

    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 2048
    * hard nproc 4096
    
    • 1
    • 2
    • 3
    • 4
    此文件修改后需要重新登录用户,才会生效

    普通用户启动线程数限制
    问题错误信息描述
    max number of threads [1024] for user [es] likely too low, increase to at least [4096]

    修改普通用户可以创建的最大线程数
    max number of threads [1024] for user [es] likely too low, increase to at least [4096]

    原因:无法创建本地线程问题,用户最大可创建线程数太小

    解决方案:修改90-nproc.conf 配置文件。
    三台机器使用baiqi用户执行以下命令修改配置文件

    Centos6
    sudo vi /etc/security/limits.d/90-nproc.conf
    Centos7
    sudo vi /etc/security/limits.d/20-nproc.conf
    
    • 1
    • 2
    • 3
    • 4

    找到如下内容:

    * soft nproc 1024#修改为
    * soft nproc 4096
    
    • 1
    • 2
    普通用户调大虚拟内存

    错误信息描述:
    max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    原因:最大虚拟内存太小,解决方案:调大系统的虚拟内存,每次启动机器都手动执行下。三台机器执行以下命令

    vim /etc/sysctl.conf
    
    • 1

    追加以下内容:

    vm.max_map_count=262144 
    
    • 1

    保存后,执行:

    sysctl -p
    
    • 1

    备注:以上三个问题解决完成之后,重新连接secureCRT或者重新连接xshell生效

    设置用户密码登录
    cd /usr/local/es/elasticsearch-7.6.1/bin
    ./elasticsearch-setup-passwords interactive
    
    • 1
    • 2

    这里会设置六个账号的密码:elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
    我这里统一使用liaozhiwei作为这六个账号的密码

    elastic作为我直接访问es的账号

    启动ES服务

    三台机器使用liaozhiwei用户执行以下命令启动es服务

    nohup /usr/local/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &
    
    • 1

    后台启动ES 进入bin目录 ./elasticsearch -d
    启动成功之后jsp即可看到es的服务进程,并且访问页面

    http://192.168.160.128:9200/?pretty
    
    • 1

    上面配置了用户密码这里访问也需要输入

    elastic
    liaozhiwei
    
    • 1
    • 2

    在这里插入图片描述

    能够看到es启动之后的一些信息
    注意:如果哪一台机器服务启动失败,那么就到哪一台机器的

    /usr/local/es/elasticsearch-7.6.1/log
    
    • 1

    这个路径下面去查看错误日志

    开启Linux防火墙

    systemctl start firewalld 
    systemctl enable firewalld
    
    • 1
    • 2

    centos开放端口宿主机访问

    firewall-cmd --add-port=9200/tcp --permanent
    firewall-cmd --reload
    
    • 1
    • 2

    查询端口是否开启命令

    firewall-cmd --query-port=9200/tcp
    
    • 1

    注意:启动ES的时候出现 Permission denied。原因:当前的用户没有对XX文件或目录的操作权限。

    客户端Kibana安装

    ES主流客户端Kibana,开放9200端口与图形界面客户端交互
    1)下载Kibana放之/usr/local/es目录中
    2)解压文件:tar -zxvf kibana-X.X.X-linux-x86_64.tar.gz
    3)进入/usr/local/es/kibana-X.X.X-linux-x86_64/config目录
    4)使用vi编辑器:

    vi /usr/local/es/kibana-7.6.1-linux-x86_64/config/kibana.yml
    
    • 1
    server.port: 5601
    server.host: "192.168.160.128"
    elasticsearch.hosts: ["http://192.168.160.128:9200"]
    elasticsearch.username: "kibana"
    elasticsearch.password: "liaozhiwei"
    i18n.locale: "zh-CN"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    centos开放端口宿主机访问

    firewall-cmd --add-port=5601/tcp --permanent
    firewall-cmd --reload
    
    • 1
    • 2

    查询端口是否开启命令

    firewall-cmd --query-port=5601/tcp
    
    • 1

    切换root用户 给es用户这个文件的权限

    su root
    sudo chown -R liaozhiwei /usr/local/es/kibana-7.6.1-linux-x86_64
    
    • 1
    • 2

    5)启动Kibana

    ./usr/local/es/kibana-7.6.1-linux-x86_64/bin/kibana
    
    • 1

    后台启动kibana

    cd /usr/local/es/kibana-7.6.1-linux-x86_64/bin/
    nohup  ./kibana &
    
    • 1
    • 2

    6)访问Kibana

    http://192.168.160.128:5601/app/kibana
    
    • 1

    上面配置了用户密码这里访问也需要输入

    elastic
    liaozhiwei
    
    • 1
    • 2

    安装IK分词器

    我们后续也需要使用Elasticsearch来进行中文分词,所以需要单独给Elasticsearch安装IK分词器插件。以下为具体安装步骤:
    下载Elasticsearch IK分词器
    https://github.com/medcl/elasticsearch-analysis-ik/releases

    切换到liaozhiwei用户,并在es的安装目录下/plugins创建ik

    mkdir -p /usr/local/es/elasticsearch-7.6.1/plugins/ik
    
    • 1

    将下载的ik分词器上传并解压到该目录

    cd /usr/local/es/elasticsearch-7.6.1/plugins/ik
    unzip  elasticsearch-analysis-ik-7.6.1.zip 
    
    • 1
    • 2

    重启Elasticsearch

    ps -ef | grep elastic
    kill -9 PID
    nohup /usr/local/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &
    
    • 1
    • 2
    • 3

    创建elasticsearch-demo项目

    项目代码:https://gitee.com/java_wxid/java_wxid/tree/master/demo/elasticsearch-demo
    项目结构如下(示例):
    在这里插入图片描述

    修改pom.xml

    代码如下(示例):

    
    
        4.0.0
    
    
        com.example
        elasticsearch-demo
        0.0.1-SNAPSHOT
        elasticsearch-demo
        Demo project for Spring Boot
        
        
            UTF-8
            UTF-8
            1.8
            
            2.3.12.RELEASE
            Hoxton.SR12
            2.2.7.RELEASE
            7.12.0
        
    
        
            
                org.springframework.boot
                spring-boot-starter
            
    
            
                org.springframework.boot
                spring-boot-starter-test
                test
            
    
            
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
            
                org.springframework.cloud
                spring-cloud-starter-bootstrap
                3.1.0
            
    
            
            
                org.springframework.data
                spring-data-elasticsearch
                4.2.0
            
            
                org.elasticsearch.client
                elasticsearch-rest-high-level-client
                ${elasticsearch.version}
            
            
                org.elasticsearch
                elasticsearch
                ${elasticsearch.version}
            
            
                org.elasticsearch.client
                elasticsearch-rest-client
                ${elasticsearch.version}
            
    
            
            
                org.projectlombok
                lombok
                RELEASE
                compile
            
    
        
    
        
        
            
                
                    org.springframework.boot
                    spring-boot-starter-parent
                    ${spring.boot.version}
                    pom
                    import
                
                
                    org.springframework.cloud
                    spring-cloud-dependencies
                    ${spring.cloud.version}
                    pom
                    import
                
                
                    com.alibaba.cloud
                    spring-cloud-alibaba-dependencies
                    ${spring.cloud.alibaba.version}
                    pom
                    import
                
            
        
    
    
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112

    创建ElasticSearchController

    代码如下(示例):

    package com.example.elasticsearchdemo.controller;
    
    import com.example.elasticsearchdemo.model.Userinfo;
    import com.example.elasticsearchdemo.service.ElasticsearchService;
    import org.springframework.data.elasticsearch.core.SearchPage;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.beans.factory.annotation.Autowired;
    import java.util.Iterator;
    
    /**
     * @author zhiwei Liao
     * @Description
     * @Date create in 2022/9/12 0012 21:03
     */
    @RestController
    public class ElasticSearchController {
    
        @Autowired
        private ElasticsearchService elasticsearchService;
    
        @GetMapping("/importData")
        public void importData() {
            elasticsearchService.importData();
        }
    
        @GetMapping("/search")
        public SearchPage search(){
            return elasticsearchService.search();
        }
    
    
        @GetMapping("/findAll")
        public Iterator findAll(){
            return elasticsearchService.findAll();
        }
    }
    
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    创建ElasticsearchDao

    代码如下(示例):

    package com.example.elasticsearchdemo.dao;
    
    /**
     * @author zhiwei Liao
     * @Description
     * @Date create in 2022/9/12 0012 21:03
     */
    import com.example.elasticsearchdemo.model.Userinfo;
    import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository
    //Userinfo对应实体 Long对应主键
    public interface ElasticsearchDao extends ElasticsearchRepository {
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    创建Userinfo

    代码如下(示例):

    package com.example.elasticsearchdemo.model;
    
    import lombok.Data;
    import org.springframework.data.annotation.Id;
    import org.springframework.data.elasticsearch.annotations.Document;
    import org.springframework.data.elasticsearch.annotations.Field;
    import org.springframework.data.elasticsearch.annotations.FieldType;
    import java.io.Serializable;
    
    /**
     * @author zhiwei Liao
     * @Description
     * @Date create in 2022/9/12 0012 21:03
     */
    
    @Data
    @Document(indexName = "user", shards = 2, replicas = 2)  //对应索引库和类型
    public class Userinfo implements Serializable {
    
        @Id
        @Field(store = false, type = FieldType.Long)
        private long id;
        @Field(store = false, type = FieldType.Text,analyzer = "ik_smart",searchAnalyzer = "ik_smart")
        private String name;
        @Field(store = false, type = FieldType.Text,analyzer = "ik_smart",searchAnalyzer = "ik_smart")
        private String city;
        @Field(store = false, type = FieldType.Long)
        private Integer age;
        @Field(store = false, type = FieldType.Text,analyzer = "ik_smart",searchAnalyzer = "ik_smart")
        private String remark;
    }
    
    
    
    • 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
    • 31
    • 32
    • 33

    创建ElasticsearchService

    代码如下(示例):

    package com.example.elasticsearchdemo.service;
    
    import com.example.elasticsearchdemo.model.Userinfo;
    import org.springframework.data.elasticsearch.core.SearchPage;
    import java.util.Iterator;
    /**
     * @author zhiwei Liao
     * @Description
     * @Date create in 2022/9/12 0012 21:03
     */
    public interface ElasticsearchService {
    
        void importData();
    
        SearchPage search();
    
        Iterator findAll();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    创建ElasticsearchServiceImpl

    代码如下(示例):

    package com.example.elasticsearchdemo.service.impl;
    
    import com.example.elasticsearchdemo.dao.ElasticsearchDao;
    import com.example.elasticsearchdemo.model.Userinfo;
    import com.example.elasticsearchdemo.service.ElasticsearchService;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.aggregations.AggregationBuilders;
    import org.elasticsearch.search.aggregations.Aggregations;
    import org.elasticsearch.search.aggregations.bucket.terms.ParsedLongTerms;
    import org.elasticsearch.search.aggregations.bucket.terms.Terms;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
    import org.springframework.data.elasticsearch.core.SearchHitSupport;
    import org.springframework.data.elasticsearch.core.SearchHits;
    import org.springframework.data.elasticsearch.core.SearchPage;
    import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
    import org.springframework.stereotype.Service;
    import javax.annotation.Resource;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    /**
     * @author zhiwei Liao
     * @Description
     * @Date create in 2022/9/12 0012 21:03
     */
    @Service
    public class ElasticsearchServiceImpl implements ElasticsearchService {
    
        @Autowired
        private ElasticsearchDao dao;
        @Resource
        private ElasticsearchDao elasticsearchDao;
        @Resource
        private ElasticsearchRestTemplate elasticsearchTemplate;
    
        /** @description 导入数据
         * @params []
         * @return void
         * @author lxy
         * @date 2020/9/29 11:06
         **/
        @Override
        public void importData(){
            //从mysql查出所有数据 一般来说可以先查出来是一个对象javabean,然后转换成索引对象Userinfo就行,我这里是直接用的userinfo对象
            List user = new ArrayList<>();
            Userinfo userinfo = new Userinfo();
            userinfo.setAge(25);
            userinfo.setCity("上海");
            userinfo.setName("廖志伟");
            userinfo.setRemark("remark");
            userinfo.setId(1);
            user.add(userinfo);
            //导入到es
            dao.saveAll(user);
        }
    
        /** @description es搜索
         * @params [parm]
         * @return java.util.List
         * @author lxy
         * @date 2020/9/29 11:32
         **/
        @Override
        public SearchPage search() {
            //TODO 构建查询对象用于封装各种查询条件  NativeSearchQueryBuilder
            //1.构建查询对象
            NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
            nativeSearchQueryBuilder.addAggregation(AggregationBuilders.terms("name")
                    .field("age").size(30));
            SearchHits search = elasticsearchTemplate.search(nativeSearchQueryBuilder.build(), Userinfo.class);
            int pageNo = 1;
            int pageSize = 5;
            Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
            //7.获取分页数据
            SearchPage searchPageResult = SearchHitSupport.searchPageFor(search, pageable);
            System.out.println(String.format("totalPages:%d, pageNo:%d, size:%d", searchPageResult.getTotalPages(), pageNo, pageSize));
            return searchPageResult;
        }
    
    
        @Override
        public Iterator findAll() {
            return elasticsearchDao.findAll().iterator();
        }
    }
    
    
    • 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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    创建application.yml

    代码如下(示例):

    server:
      port: 8098
    spring:
      application:
        name: elasticsearch-demo
      elasticsearch:
        rest:
          username: elastic
          password: liaozhiwei
          uris: http://192.168.160.128:9200
          connection-timeout: 1000
          read-timeout: 1000
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    校验Elasticsearch是否正常工作

    如下图(示例):

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    0.Web 后端 开发
    python+Django 使用apscheduler实现定时任务 管理调度
    iPhone相机参数设置,苹果原相机也能拍出大片感
    云呐|机房监控服务平台,机房监控服务平台有哪些
    AI工程化—— 如何让AI在企业多快好省的落地?
    【前端知识】Three 学习日志(六)—— 环境光与平行光
    深度之眼Paper带读笔记GNN.08.GCN(下)
    数据结构——栈和队列
    网红和主播们是用的什么美颜工具?深入剖析美颜sdk与美颜Api
    nodejs+vue家教管理系统
  • 原文地址:https://blog.csdn.net/java_wxid/article/details/127134531