OS: CentOS Linux release 7.9.2009 (Core)
机器:10.28.19.107
ES、Kibana安装版本:7.15.2
Elasticsearch:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
Kibana: https://www.elastic.co/cn/downloads/past-releases#kibana
提前下载好elasticsearch-7.15.2-linux-x86_64.tar.gz、kibana-7.15.2-linux-x86_64.tar.gz,上传至/opt目录下。
插件:
注意,下手插件时,请与安装的ES版本保持一至 ,当前ES安装版本为7.15.2,那么下载的插件版本也要为7.15.2。
ik中文分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases
拼英分词器:https://github.com/medcl/elasticsearch-analysis-pinyin/releases
同样,将elasticsearch-analysis-ik-7.15.2.zip、elasticsearch-analysis-pinyin-7.15.2.zip安装包上传至/opt目录下。
Java环境:
ES依赖于java环境,请确保机器上已有安装java环境,ES7.x版本对应的是JDK1.8,版本不要弄错。
未安装可自行下载java安装包,进行安装。
java国内下载镜像站:http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html
rpm -ivh jdk-8u351-linux-x64.rpm
安装必要组件:
yum install lrzsz lsof unzip -y
上面组件必须要安装,为后面的es安装做准备。
优化inux资源限制配置文件limits.conf
vim /etc/security/limits.conf
添加以下内容:
# 进程可以最大打开的文件数
* soft nofile 655350
* hard nofile 655350
# 进程可以创建的线程数
* soft nproc 102400
* hard nproc 409600
# 允许进程锁定内存
* soft memlock unlimited
* hard memlock unlimited
修改Linux系统配置文件sysctl.conf
vim /etc/sysctl.conf
添加以下内容:
vm.max_map_count = 262145
fs.file-max=655360
执行下面命令,立即生效:
sysctl -p
max_map_count: 文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量
fs.file-max: 系统中可以同时打开的文件数目
开启端口
这里提前开启端口,为了方便后续的测试验证使用
5601为kibana端口, 9100为head端口, 9200为服务端口,9300为内部节点之间沟通端口
执行下面命令:
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload
规划安装目录是/opt
elasticsearch-7.15.2-linux-x86_64.tar.gz安装包提前放置在/opt目录下
cd /opt
tar -xf elasticsearch-7.15.2-linux-x86_64.tar.gz
mv elasticsearch-7.15.2 elasticsearch
mkdir -p /opt/elasticsearch/data
修改es配置文件
vim /opt/elasticsearch/config/elasticsearch.yml
添加以下内容,配置文件是yaml语法,注意key与value之间要有空格
# es集群名称,默认elasticsearch,es会自动发现在同一网段下es,如果在同一网段下有多个集群,可用这个属性来区分不同的集群
cluster.name: elasticsearch
# 节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中
node.name: es-node0
# 索引数据存储路径,默认es根目录下data文件夹,可设置多个存储路径,用逗号隔开,例:/path/to/data1,/path/to/data2
path.data: /opt/elasticsearch/data
# 设置日志文件的存储路径,默认是es根目录下的logs文件夹
path.logs: /opt/elasticsearch/logs
# 设置对外服务的http端口,默认为9200
http.port: 9200
# 网关地址
network.host: 0.0.0.0
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["es-node0"]
# 7.13以上版本,禁用安全选项
xpack.security.enabled: false
从5.0开始 elasticsearch 安全级别提高了,不允许采用root帐号启动, 所以需要添加一个用户用来启动 elasticsearch,创建es用户并给elasticsearch安装目录赋予权限。
创建es用户,并授权安装目录
useradd es
chown -R es:es /opt/elasticsearch
这里安装下ik中文分词器插件、拼英分词器插件
elasticsearch-analysis-ik-7.15.2.zip、elasticsearch-analysis-pinyin-7.15.2.zip解压放入ES插件目录下:
unzip -d /opt/elasticsearch/plugins/ik elasticsearch-analysis-ik-7.15.2.zip
unzip -d /opt/elasticsearch/plugins/pinyin elasticsearch-analysis-pinyin-7.15.2.zip
再次授权安装目录:
chown -R es:es /opt/elasticsearch
ES服务脚本放置在/etc/init.d下
创建ES服务脚本文件:
cat << \EOF > /etc/init.d/elasticsearch
#!/bin/sh
#chkconfig: 2345 80 05
#description: elasticsearch
#processname: elasticsearch-7.15.2
# 这个目录是你Es所在文件夹的目录
export ES_HOME=/opt/elasticsearch
case $1 in
start)
# 切换至es用户
su es<<!
# 进入es根目录
cd $ES_HOME
# 启动,并将进程号写入至pid文件中
./bin/elasticsearch -d -p $ES_HOME/pid
# 退出es用户
exit
!
echo "elasticsearch startup"
;;
stop)
# 获取es进程号
es_pid=`cat $ES_HOME/pid`
# 杀掉es进程
kill -9 $es_pid
echo "elasticsearch stopup"
;;
restart)
# 获取es进程号
es_pid=`cat $ES_HOME/pid`
# 杀掉es进程
kill -9 $es_pid
echo "elasticsearch stopup"
# 切换至es用户
su es<<!
# 进入es根目录
cd $ES_HOME
# 启动,并将进程号写入至pid文件中
./bin/elasticsearch -d -p $ES_HOME/pid
exit
!
echo "elasticsearch startup"
;;
*)
echo "start|stop|restart"
;;
esac
EOF
注意,当中的su es<<!的es为用户
授权为可执行
chmod +x /etc/init.d/elasticsearch
ES启动、停止、重启:
service elasticsearch start
service elasticsearch stop
service elasticsearch restart
测试访问ES:
或者
curl http://127.0.0.1:9200
添加为开机启动
chkconfig --add elasticsearch
规划安装目录是/opt
kibana-7.15.2-linux-x86_64.tar.gz安装包提前放置在/opt目录下
cd /opt
tar -xf kibana-7.15.2-linux-x86_64.tar.gz
mv kibana-7.15.2 elasticsearch-kibana
修改kibana配置文件
vim /opt/elasticsearch-kibana/config/kibana.yml
最下面添加以下内容,配置文件是yaml语法,注意key与value之间要有空格
# 服务名称,默认值:“your-hostname”用于标识此Kibana实例的可读显示名称
server.name: "kibana"
# 默认值:“localhost”此设置指定后端服务器的主机
server.host: "0.0.0.0"
# kibana中文界面显示
i18n.locale: "zh-CN"
# Elasticsearch实例
elasticsearch.hosts: [ "http://10.28.19.110:9200" ]
# 指定Kibana进程ID文件的路径
pid.file: /opt/elasticsearch-kibana/pid
同样,这里kibana也授权给es来启动
授权给es用户组
chown es:es -R /opt/elasticsearch-kibana
Kibana服务脚本放置在/etc/init.d下
创建Kibana服务脚本文件:
cat << \EOF > /etc/init.d/kibana
#!/bin/sh
#chkconfig: 2345 80 05
#description: kibana
#processname: kibana-7.15.2
# 这个目录是你Kibana所在文件夹的目录
export KIBANA_HOME=/opt/elasticsearch-kibana
case $1 in
start)
# 切换至es用户
su es<<!
# 启动,并将进程号写入至pid文件中
nohup $KIBANA_HOME/bin/kibana >>/dev/null 2>&1 &
# 退出es用户
exit
!
echo "kibana startup"
;;
stop)
# 获取es进程号
es_pid=`cat $KIBANA_HOME/pid`
# 杀掉es进程
kill -9 $es_pid
echo "kibana stopup"
;;
restart)
# 获取es进程号
es_pid=`cat $KIBANA_HOME/pid`
# 杀掉es进程
kill -9 $es_pid
echo "kibana stopup"
# 切换至es用户
su es<<!
# 启动,并将进程号写入至pid文件中
nohup $KIBANA_HOME/bin/kibana >>/dev/null 2>&1 &
exit
!
echo "kibana startup"
;;
*)
echo "start|stop|restart"
;;
esac
EOF
授权为可执行:
chmod +x /etc/init.d/kibana
注意,kibana配置文件中一定要有指定pid存放位置,且需要与这里服务脚本中的pid位置一致
启动、停止、重启:
service kibana start
service kibana stop
service kibana restart
测试访问Kibana:
添加为开机启动
chkconfig --add kibana
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
CentOS8搭建nfs服务
k8s一键安装redis单机版
k8s一键安装mysql8单机版
Docker制作springboot运行应用镜像
k8s部署springboot应用
zookeeper集群安装
Nginx日志切割
Elasticsearch单机版本安装
Elasticsearch集群安装
springboot集成prometheus+grafana
安装Docker及学习
不知何故,我似乎无法获得包含我的聚合的响应...使用curl它按预期工作:HBZUMB01$curl-XPOST"http://localhost:9200/contents/_search"-d'{"size":0,"aggs":{"sport_count":{"value_count":{"field":"dwid"}}}}'我收到回复:{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":90,"max_score":0.0,"hits":[]},"a
1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>
我有一个Rails应用程序,现在设置了ElasticSearch和Tiregem以在模型上进行搜索,我想知道我应该如何设置我的应用程序以对模型中的某些索引进行模糊字符串匹配。我将我的模型设置为索引标题、描述等内容,但我想对其中一些进行模糊字符串匹配,但我不确定在何处进行此操作。如果您想发表评论,我将在下面包含我的代码!谢谢!在Controller中:defsearch@resource=Resource.search(params[:q],:page=>(params[:page]||1),:per_page=>15,load:true)end在模型中:classResource'Us
美团外卖搜索工程团队在Elasticsearch的优化实践中,基于Location-BasedService(LBS)业务场景对Elasticsearch的查询性能进行优化。该优化基于Run-LengthEncoding(RLE)设计了一款高效的倒排索引结构,使检索耗时(TP99)降低了84%。本文从问题分析、技术选型、优化方案等方面进行阐述,并给出最终灰度验证的结论。1.前言最近十年,Elasticsearch已经成为了最受欢迎的开源检索引擎,其作为离线数仓、近线检索、B端检索的经典基建,已沉淀了大量的实践案例及优化总结。然而在高并发、高可用、大数据量的C端场景,目前可参考的资料并不多。因此
开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建
文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就
我有一个关于配置elasticsearch以连接AWSelasticsearch服务以在生产环境中运行项目的问题。我的gem文件:gem'searchkick'gem'faraday_middleware-aws-signers-v4'gem'aws-sdk','~>2'gem"elasticsearch",">=1.0.15"引用:https://github.com/ankane/searchkick我的config/initializers/elasticsearch.rb文件:require"faraday_middleware/aws_signers_v4"ENV["ELAS
elasticsearch查看当前集群中的master节点是哪个需要使用_cat监控命令,具体如下。查看方法es主节点确定命令,以kibana上查看示例如下:GET_cat/nodesv返回结果示例如下:ipheap.percentram.percentcpuload_1mload_5mload_15mnode.rolemastername172.16.16.188529952.591.701.45mdi-elastic3172.16.16.187329950.990.991.19mdi-elastic2172.16.16.231699940.871.001.03mdi-elastic4172
我在查询中使用geo_distancefilter和tire,它工作正常:search.filter:geo_distance,:distance=>"#{request.distance}km",:location=>"#{request.lat},#{request.lng}"我预计结果会以某种方式包括到我用于过滤器的地理位置的计算距离。有没有办法告诉elasticsearch在响应中包含它,这样我就不必在ruby中为每个结果计算它?==更新==我在谷歌群组中的foundtheanswer:search.sortdoby"_geo_distance","location"=>"
如果不必像这样进行搜索就可以对元素进行计数,那就太好了Obj.search("id:*").count这可能吗? 最佳答案 在ElasticSearch中,您可以使用计数API对所有元素进行计数curl-XGEThttp://localhost:9200/index/_count参见CountAPI他们网站上的文档。 关于ruby-有没有办法计算ElasticSearch或Tire中索引的所有元素?,我们在StackOverflow上找到一个类似的问题: ht