Elasticsearch idea本地启动/调试教程-适用不同操作系统

442 阅读2分钟

1、我的环境概览

  • 操作系统:MacOS m1(aarch64)
  • Elasticsearch :7.16.2
  • Zulu JDK 16 (和Elasticsearch 版本相对应即可,详见www.elastic.co/cn/support/…
  • Gradle 7.2.2(Elasticsearch 是Gradle项目)
  • IntelliJ IDEA 2021.3.1 在最新的idea里,JDK和Gradle可以不主动下载,在reload gradle项目时会弹出提示自动下载

2、源码下载

github.com/elastic/ela…

假设安装目录为 /Users/xiaobei/project/elasticsearch


3、启动IDEA

1、 File->open 打开项目

2、切换到想要的tag,这里以 v7.16.2为例

3、并下载对应版本的release包备用,release包结构如下

在这里插入图片描述

4、 在源码elasticsearch目录下新建一个自己的目录,这里我命名myhome,目录结构如下,再新建子目录config,plugins,modules

在这里插入图片描述

5、把release包的modules复制到源码的myhome/modules目录下

6、把config包的elasticsearch.yml , jvm.options, log4j2.properties复制到源码的myhome/config目录下

6.1、 修改elasticsearch.yml,添加参数
# 可自定义
cluster.name: xiaobei-testxxx
# 可自定义
node.name: xiaobei-testxxx-node
# 可自定义,我放在刚刚创建的myhome目录下
path.data: /Users/xiaobei/Project/elasticsearch/myhome/data
path.logs: /Users/xiaobei/Project/elasticsearch/myhome/logs
# 启动在本地
network.host: 127.0.0.1
# 启动端口号
http.port: 9200
# 集群的主节点,和node.name保持一致即可
cluster.initial_master_nodes: ["xiaobei-testxxx-node"]


6.2 在config包下添加policy文件,这里我命名为elasticsearch.policy,内容如下
grant {
        permission javax.management.MBeanTruxtPermission "register";
        permission javax.management.MBeanServerPermission "createMBeanServer";
        permission java.lang.RuntimePermission "createClassLoader";
        permission java.lang.RuntimePermission "getClassLoader";
        permission java.lang.RuntimePermission "setContextClassLoader";
        permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThread";
        permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup";
 };

6.3 移动好文件的myhome文件夹结构如下
myhome
├── config
│   ├── elasticsearch.policy
│   ├── elasticsearch.yml
│   ├── jvm.options
│   └── log4j2.properties
├── modules
│   ├── aggs-matrix-stats
│   ├── analysis-common
│   ├── constant-keyword
│   ├── frozen-indices
│   ├── ingest-common
│   ├── ingest-geoip
│   ├── ingest-user-agent
│   ├── kibana
│   ├── lang-expression
│   ├── lang-mustache
│   ├── lang-painless
│   ├── legacy-geo
│   ├── mapper-extras
│   ├── mapper-version
│   ├── parent-join
│   ├── percolator
│   ├── rank-eval
│   ├── reindex
│   ├── repositories-metering-api
│   ├── repository-encrypted
│   ├── repository-url
│   ├── runtime-fields-common
│   ├── search-business-rules
│   ├── searchable-snapshots
│   ├── snapshot-repo-test-kit
│   ├── spatial
│   ├── transform
│   ├── transport-netty4
│   ├── unsigned-long
│   ├── vector-tile
│   ├── vectors
│   ├── wildcard
│   ├── x-pack-aggregate-metric
│   ├── x-pack-analytics
│   ├── x-pack-async
│   ├── x-pack-async-search
│   ├── x-pack-autoscaling
│   ├── x-pack-ccr
│   ├── x-pack-core
│   ├── x-pack-data-streams
│   ├── x-pack-deprecation
│   ├── x-pack-enrich
│   ├── x-pack-eql
│   ├── x-pack-fleet
│   ├── x-pack-graph
│   ├── x-pack-identity-provider
│   ├── x-pack-ilm
│   ├── x-pack-logstash
│   ├── x-pack-ml
│   ├── x-pack-monitoring
│   ├── x-pack-ql
│   ├── x-pack-rollup
│   ├── x-pack-security
│   ├── x-pack-shutdown
│   ├── x-pack-sql
│   ├── x-pack-stack
│   ├── x-pack-text-structure
│   ├── x-pack-voting-only-node
│   └── x-pack-watcher
└── plugins

7、 统一jdk版本

7.1.、 File-> Project Structure

在这里插入图片描述

7.2.、 IntelliJ IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle在这里插入图片描述

8、 添加启动类配置

在这里插入图片描述

#5、JVM选项
-Des.path.home=/Users/xiaobei/Project/elasticsearch/myhome
-Des.path.conf=/Users/xiaobei/Project/elasticsearch/myhome/config
-Djava.security.policy=/Users/xiaobei/Project/elasticsearch/myhome/config/elasticsearch.policy
-Dlog4j2.disable.jmx=true
-Xmx4g
-Xms4g
#6、启动类路径

模块:elasticsearch.server.main 类全限定名:org.elasticsearch.bootstrap.Elasticsearch

#7、工作空间

你的elasticsearch源码目录

9、 build gradle项目(最新版的idea在gradle和jdk版本不对时,会自动弹出提示快捷下载)

在这里插入图片描述

10、启动项目,在浏览器能成功打开localhost:9200,大功告成

欢迎大家评论来提出问题