微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

win10+springboot + elasticsearch

1. 本地安装es 

下载安装包 : https://www.elastic.co/cn/downloads/elasticsearch , 最新版本的直接选择机器环境即可下载 , 如若需要其他版本的 , 点击右侧view past release 查看历史版本进行下载即可 . 如下 : 

 

 

 2.解压出来后进入,config目录,修改elasticsearch.yml文件配置变量

# ======================== Elasticsearch Configuration =========================
# ---------------------------------- Cluster -----------------------------------
#
# 集群名
cluster.name: my-es
#
# ------------------------------------ Node ------------------------------------
#
# 节点名
node.name: cloudtravel-es
# 节点是否有资格被选举为node default = true.认集群中的第一台机器为master.若该节点挂了将会重新选举
node.master: true
# 指定该节点是否存储索引数据 .default=true
node.data: true
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
#
# ----------------------------------- Paths ------------------------------------
#
# 配置文件的存储路径 . 不设置认就是根目录的config文件夹
#
path.data: D:/software/elasticSearch/elasticsearch-7.14.2/config
#
# 日志文件存储路径 不设置认就是根目录的logs文件夹
#
path.logs: D:/software/elasticSearch/elasticsearch-7.14.2/logs
#
# ----------------------------------- Memory -----------------------------------
#
# 这个配置,锁定物理内存地址,防止elasticsearch内存被交换出去,
# 也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高;
bootstrap.memory_lock: true
# ---------------------------------- Network -----------------------------------
#
# 对外服务的http端口 . 认为9200
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
#
# For more information, consult the network module documentation.
#
# --------------------------------- discovery ----------------------------------
#
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
cluster.initial_master_nodes: ["cloudtravel-es"]
#
# ---------------------------------- VarIoUs -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true

3.es是自带jdk的 . 启动时会优先寻找Java_home . 这里强制指定es使用其版本自带的jdk .修改启动命令 : elasticsearch-env.bat[windows下] . 对比了下 , 我自己的jdk少了个conf文件夹 . 也就是少了security的作用 . 干啥用的还没搞明白 . 但是启动时会报当前版本不对啥的

 

 

 4. 这时候进入bin目录执行elasticsearch.bat就可以启动了. 启动成功 . 如下 :看到started就表示启动成功了 . 其中 : transportservice指定的ip:端口即为我们Java代码中进行配置的ip和端口 . httpTransportService则是对外提供http服务时的ip:端口

 

 

 这时候浏览器访问http://localhost:9200/ . 看到如下返回.就表示初步启动成功了 

 

 

5. 配置为服务自启动 : elasticsearch的bin目录下有一个elasticsearch-service.bat

两个命令 : .\elasticsearch-service.bat install 将该es加载为服务   .\elasticsearch-service.bat start: 启动服务  后续window就可以直接通过服务列表直接控制开关了 . 不再需要一直开个黑窗口

6. 引入前端服务 : 为直观的看到es服务中的内容 . 这里引入界面化管理工具ElasticSearch-head

其源码托管于GitHub,地址为:https://github.com/mobz/elasticsearch-head

我这里是直接使用的node.js进行启动的 . node安装这里不再详细赘述 . 需要的自行百度 . elasticsearch-head下载到本地后 .

6.1. 解压 . 进入根目录下 , 执行npm install 初始化所需的node插件

6.2. 插件初始化完成后 , 执行npm run start启动前端服务 . 如下 : 

 

 

6.3.这时候浏览器访问.http://localhost:9100/就可以直接看到当前es服务中的内容了 . 若es服务的ip:port换了 . 页面中也可以替换查询 . 如下 : 

 

 

 

 

7. 代码中使用 说明 :  我这是在现有工程里接入的,所以一些其他配置比如db配置啥的就不贴了 . 挑重点了

7.1 pom引用 : 这里es的自动装配启动包版本和springboot的版本一致即可 . 

<!-- 接入elasticsearch -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>${springboot-starter.version}</version>
</dependency>
            

7.2 资源文件配置 .可以单独创建一个es.yml也行 . 也可以直接在application.properties文件中进行配置.初步学习 , 就先最简单来了 .如下 :

# ************************** elasticsearch config ****************************
# 这里的集群名要和所连接的es服务中配置的cluster-name一致
spring.data.elasticsearch.cluster-name=my-es
# 和启动成功后报的transportservice后提示的ip:端口一致即可 . 认为9300
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300

7.3 配置实体类 . 我用的是7.14.2版本 . 还是老原则, 学习先从能用起来开始 . 后续再更新复杂的用法

/**
 * es的index必须为小写
 */
@Getter
@Setter
@AllArgsConstructor // lombok 包下 : 全参构造器
@NoArgsConstructor // lombok 包下 : 无参构造器
@Document(indexName = "user") // indexName只允许小写
public class Baseusermodel implements Serializable {

    private static final long serialVersionUID = 8283483377785895360L;

    @Id
    @Field(type = FieldType.Long)
    private Long id;

    private String bizId;

    private String tenantId;

    private Integer userType;

    @Field(type = FieldType.Text)
    private String userName;

    @Field(type = FieldType.Text)
    private String idNumber;

    private Integer idNumType;

    private Date gmtCreate;

    private Date gmtUpdate;

    private String templateId;
}

7.4. 原来业务中已经有了在使用的dao方法了 . 这里可以专门定义一个服务于es的dao. 继承ElasticsearchRepository<Baseusermodel[上面配置的类] , Long[实体类中@id声明的属性的类型]>即可.这个类中提供了几个通用的增删查方法 .可以直接使用,如下 : 

 

 

 7.5 mock使用 : 查询数据库后结果同步至es . 业务上使用时 , 可直接进行事务同步 .

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐