1.elasticsearch
首先对系统参数进行调整
1 2 3 4 5 6 7 8 9 10 11 12 13 | vim /etc/security/limits .conf #打开文件数量 * soft nofile 65535 * hard nofile 65535 #进程数量 * soft nproc 65535 * hard nproc 65535 #内存限制 * soft memlock unlimited * hard memlock umlimited [root@bogon ~] # vim /etc/sysctl.conf vm.max_map_count = 655360 [root@bogon ~] # sysctl -p |
elasticsearch5之后的版本不能以root用户运行,需要创建普通用户
1 2 3 4 | [root@localhost elastic] # useradd es [root@localhost elastic] # chown -R es:es /usr/elastic [root@localhost elastic] # chown -R /elk [root@localhost elastic] # su -c '/usr/elastic/bin/elastic -d' es |
将压缩包解压后修改其配置文件,如下(其他节点更红色文字改对应配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [root@localhost elastic] # grep '^[a-z]' config/elasticsearch.yml cluster.name: elk-1 #集群名称,同一集群内名称唯一 node.name: elk-node1 #当前节点名称 node.master: true #是否允许当前节点成为master node.data: true #是否允许当前节点存储数据 path.data: /elk #数据文件存储路径 path.logs: /elk #日志文件存储路径 bootstrap.memory_lock: true #允许es进程直接申请所需最大内存,在jvm配置文件中xms,xmx要设置相同,64位系统不要超过32G network.host: 192.168.1.8,127.0.0.1 #es绑定地址 http.enabled: true #开启http服务 http.port: 9200 #对外http端口 transport.tcp.port: 9300 #集群内部通讯端口 transport.tcp.compress: true #tcp传输数据时压缩,默认false discovery.zen. ping .unicast.hosts: [ "192.168.1.8" , "hosts2:port" ] #集群发现节点配置 #### ##2个节点,master设置为2的时候,一台出现故障导致集群不可用 ##解决方案: ##把还存活的节点的配置文件集群选举相关的选项注释掉或者改成1 ##discovery.zen.minimum_master_nodes: 1 ##重启服务 |
*配置文件中给出了三种配置高性能集群拓扑结构的模式,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 1.如果你想让节点从不选举为主节点,只用来存储数据,可作为负载器 # node.master: false # node.data: true # node.ingest: true # 2. 如果想让节点成为主节点,且不存储任何数据,并保有空闲资源,可作为协调器 # node.master: true # node.data: false # node.ingest: true # 3. 如果想让节点既不称为主节点,又不成为数据节点,那么可将他作为搜索器,从节点中获取数据,生成搜索结果等 # node.master: false # node.data: false # node.ingest: true # 4. 仅作为协调器 # node.master: false # node.data: false # node.ingest: false |
启动elasticsearch,先不要将程序放到后台,因为启动会报很多错误,这里输出到前台的日志可以看到报错的内容,后面会写报错的解决方法
查看服务状态,出现下方内容代表启动成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@localhost ~] # curl 192.168.1.8:9200 { "name" : "elk-node1" , "cluster_name" : "elk-1" , "cluster_uuid" : "bcKUMQBRTJinREihKesF4A" , "version" : { "number" : "6.8.0" , "build_flavor" : "default" , "build_type" : "tar" , "build_hash" : "65b6179" , "build_date" : "2019-05-15T20:06:13.172855Z" , "build_snapshot" : false , "lucene_version" : "7.7.0" , "minimum_wire_compatibility_version" : "5.6.0" , "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" } |
调整elasticsearch使用内存
1 2 | #建议elasticsearch使用物理内存的一半,默认使用1G #修改配置文件,如下 |
增删改查
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 | # 搜索 curl -XGET "http://192.168.1.75:9200/class/_search" # 不限定域搜索搜索 curl -XGET "http://192.168.1.75:9200/class/_search?q=li si" # 限定域搜索 curl -XGET "http://192.168.1.75:9200/class/_search?q=name:lisi" # 添加PUT curl -XPUT "http://192.168.1.75:9200/class/student/1" -H 'Content-Type: application/json' -d' { "name" : "zhangsan" , "sex" : "man" , "hobby" : "computer" }' # 查询GET curl -XGET "http://192.168.1.75:9200/class/student/1/" # 更新POST,updata curl -XPOST "http://192.168.1.75:9200/class/student/1/_update" -H 'Content-Type: application/json' -d' { "doc" :{ "sex" : "ji" } }' # 删除DELETE curl -XDELETE "http://192.168.1.75:9200/class/student/1" # 查看有哪些索引 curl -XGET "http://192.168.1.75:9200/_cat/indices" # 删除索引 curl -XDELETE "http://192.168.1.75:9200/class" |
以下是启动报错及解决办法
- Caused by: java.lang.RuntimeException: can not run elasticsearch as root
1 2 3 4 5 | #这个报错是es不能以root身份运行,需要创建其他用户 [root@bogon ~] # groupadd es [root@bogon ~] # useradd es -g es [root@bogon ~] # su - es #之后以es身份运行就可以了 |
-
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
1 2 3 4 | #在文件最后加入 [root@bogon ~] # vim /etc/security/limits.conf //文件最后加入 es soft nofile 65536 es hard nofile 65536 |
- max number of threads [1024] for user [elsearch] is too low, increase to at least [2048]
1 2 3 4 | #在文件最后加入 [root@bogon ~] # vim /etc/security/limits.conf //文件最后加入 es soft nproc 4096 es hard nproc 4096 |
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
1 2 3 4 | #修改配置文件/etc/sysctl.conf,添加下面配置 [root@bogon ~] # vim /etc/sysctl.conf vm.max_map_count = 655360 [root@bogon ~] # sysctl -p |
- memory locking requested for elasticsearch process but memory is not locked
1 2 3 4 5 6 | [root@bogon ~] # ulimit -l unlimited #永久解除 [root@bogon ~] # vim /etc/security/limits.conf * soft memlock unlimited #内存限制 * hard memlock unlimited |
编写systemd启动文件
1 2 3 4 5 6 7 8 9 10 11 12 | [Unit] Description=elasticsearch [Service] User=es LimitNOFILE=655360 LimitNPROC=655360 LimitMEMLOCK=infinity ExecStart= /data/elasticsearch/bin/elasticsearch [Install] WantedBy=multi-user.target |
安装head组件
elasticsearch配置文件中添加支持跨域配置
1 2 | http.cors.enabled: true http.cors.allow-origin: "*" |
head插件有服务器版本和浏览器插件版本,使用google浏览器可以直接安装head插件
集群状态颜色:
绿色:所有条件都满足,数据完整,副本满足
黄色:数据完整,副本不满足
红色:有索引里的数据出现不完整了
紫色:有分片正在同步中
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能