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、源码下载
假设安装目录为 /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,大功告成
欢迎大家评论来提出问题