ElasticSearch 7.x文章目录ElasticSearch 7.x1.分词测试2.ES中默认分词器3.IK分词器4.自定义分词器es启动外部挂载启动kibana启动ik分词器下载1.ik分词器安装2.es启动3.Kibana启动1.windows环境安装2.Doc...
ElasticSearch 7.x
文章目录
ElasticSearch 7.x
1.分词测试
2.ES中默认分词器
3.IK分词器
4.自定义分词器
es启动外部挂载启动
kibana启动
ik分词器下载
1.ik分词器安装
2.es启动
3.Kibana启动
1.windows环境安装
2.Docker安装ElasticSearch
3.分词器
1.windows环境安装
es下载地址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch
ik分词器下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases
Kibana下载地址: https://www.elastic.co/cn/downloads/past-releases#kibana
注意:
本文测试基于7.9.0版本,推荐springboot版本2.4以上,本文使用springboot版本为2.7
下载时保证es,ik分词器及kibana版本一致,否则可能出现启动问题,
分词器建议使用官方的安装方式,解压可能会启动失败
7.x版本需要jdk环境为1.8以上,如果是8.x则需要jdk17以上环境,否则启动失败
1.ik分词器安装
进入es解压目录通过终端执行安装命令
./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.9.0 或 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.0/elasticsearch-analysis-ik-7.9.0.zip
2.es启动
es解压后启动bin下的elasticsearch.bat即可
./bin/elasticsearch.bat 如果是后台启动 ./bin/elasticsearch.bat -d
访问 http://127.0.0.1:9200/ 验证是否启动成功
3.Kibana启动
解压后启动bin下的kibana.bat即可
./bin/kibana.bat
kibana访问地址
http://127.0.0.1:5601/
2.Docker安装ElasticSearch
1. es及kibana下载
docker pull elasticsearch:7.9.0
docker pull kibana:7.9.0
创建映射文件:
mkdir -p elasticsearch/configmkdir -p elasticsearch/datamkdir -p elasticsearch/plugins
在config下执行 vim elasticsearch.yml
network.host: 0.0.0.0
elasticsearch.yml配置文件
1.1、cluster.name: elasticsearch 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。 1.2、node.name:"Franz Kafka"节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。1.3、node.master: true指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。1.4、node.data: true指定该节点是否存储索引数据,默认为true。1.5、index.number_of_shards: 5设置默认索引分片个数,默认为5片。1.6、index.number_of_replicas: 1设置默认索引副本个数,默认为1个副本。1.7、path.conf: /path/to/conf 设置配置文件的存储路径,默认是es根目录下的config文件夹。1.8、path.data: /path/to/data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:path.data: /path/to/data1,/path/to/data2 1.9、path.work: /path/to/work 设置临时文件的存储路径,默认是es根目录下的work文件夹。1.10、path.logs: /path/to/logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹1.11、path.plugins: /path/to/plugins 设置插件的存放路径,默认是es根目录下的plugins文件夹1.12、bootstrap.mlockall: true设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和 ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited命令。1.13、network.bind_host: 192.168.0.1 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。1.14、network.publish_host: 192.168.0.1 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。1.15、network.host: 192.168.0.1 这个参数是用来同时设置bind_host和publish_host上面两个参数。1.16、transport.tcp.port: 9300设置节点间交互的tcp端口,默认是9300。1.17、transport.tcp.compress: true设置是否压缩tcp传输时的数据,默认为false,不压缩。1.18、http.port: 9200设置对外服务的http端口,默认为9200。1.19、http.max_content_length: 100mb 设置内容的最大容量,默认100mb1.20、http.enabled: false是否使用http协议对外提供服务,默认为true,开启。1.21、gateway.type: local gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,Hadoop的HDFS,和amazon的s3服务器。1.22、gateway.recover_after_nodes: 1设置集群中N个节点启动时进行数据恢复,默认为1。1.23、gateway.recover_after_time: 5m 设置初始化数据恢复进程的超时时间,默认是5分钟。1.24、gateway.expected_nodes: 2设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。1.25、cluster.routing.allocation.node_initial_primaries_recoveries: 4初始化数据恢复时,并发恢复线程的个数,默认为4。1.26、cluster.routing.allocation.node_concurrent_recoveries: 2 添加删除节点或负载均衡时并发恢复线程的个数,默认为4。1.27、indices.recovery.max_size_per_sec: 0 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。1.28、indices.recovery.concurrent_streams: 5设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。1.29、discovery.zen.minimum_master_nodes: 1设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)1.30、discovery.zen.ping.timeout: 3s 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。1.31、discovery.zen.ping.multicast.enabled: false设置是否打开多播发现节点,默认是true。1.32、discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。 下面是一些查询时的慢日志参数设置index.search.slowlog.level: TRACEindex.search.slowlog.threshold.query.warn: 10sindex.search.slowlog.threshold.query.info: 5sindex.search.slowlog.threshold.query.debug: 2sindex.search.slowlog.threshold.query.trace: 500msindex.search.slowlog.threshold.fetch.warn: 1sindex.search.slowlog.threshold.fetch.info: 800ms index.search.slowlog.threshold.fetch.debug:500msindex.search.slowlog.threshold.fetch.trace: 200ms1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
es启动外部挂载启动
docker run --name es -p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms128m -Xmx512m" \-v /dockerData/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /dockerData/elasticsearch/data:/usr/share/elasticsearch/data \-v /dockerData/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch:7.9.0
如果es启动报错如下
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
该错误是挂载权限不足,修改目录权限
sudo chmod -R 777 /dockerData/elasticsearch/configsudo chmod -R 777 /dockerData/elasticsearch/datasudo chmod -R 777 /dockerData/elasticsearch/plugins
kibana启动
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://xxxxxx:9200 -p 5601:5601 -d kibana:7.9.01
docker start esdocker start kibana# 如果没有nginx,启动时会自动下载docker exec -it es /bin/bashdocker run -p 80:80 --name nginx -d nginx:latest# 将docker容器内部文件拷贝到宿主机docker container cp nginx:/etc/nginx .
ik分词器下载
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.9.0
在挂载的/dockerData/elasticsearch/plugins
下创建ik
文件夹
上传到ik文件夹下解压,重启es
yum install -y unzipunzip elasticsearch-analysis-ik-7.9.0.zip
docker restart esdocker restart kibana
解压后文件需要在plugins下的ik 的目录下,不然执行会报异常
3.分词器
ES 中处理分词的部分被称作分词器,英文是Analyzer,它决定了分词的规则。ES 自带了很多默认的分词器,比如Standard、Keyword、Whitespace等等,默认是Standard。当我们在读时或者写时分词时可以指定要使用的分词器
1.分词测试
测试hello world 是如何分词的
POST _analyze{ "analyzer": "standard", "text": "hello world"}
2.ES中默认分词器
Standard Analyzer - 默认分词器,按词切分,小写处理
Simple Analyzer - 按照非字母切分(符号被过滤), 小写处理
Stop Analyzer - 小写处理,停用词过滤(the,a,is)
Whitespace Analyzer - 按照空格切分,不转小写
Keyword Analyzer - 不分词,直接将输入当作输出
Patter Analyzer - 正则表达式,默认\W+(非字符分割)
Language - 提供了30多种常见语言的分词器
Customer Analyzer 自定义分词器
查看地址列分词情况:
GET news/_analyze{ "field": "address", "text": "198 mill lane"}
执行结果
{ "tokens" : [ { "token" : "198", "start_offset" : 0, "end_offset" : 3, "type" : "", "position" : 0 }, { "token" : "mill", "start_offset" : 4, "end_offset" : 8, "type" : "", "position" : 1 }, { "token" : "lane", "start_offset" : 9, "end_offset" : 13, "type" : "", "position" : 2 } ]}
这些分词器默认都是对英文进行分词,如果是中文就会出现每个汉字进行分词
3.IK分词器
由于默认都是英文分词,所有需要安装中文分词插件,安装后可以进行中文分词
ik_smart,智能分词,会做最粗粒度的拆分
ik_max_word,最细粒度拆分
POST _analyze{ "analyzer": "ik_smart" , "text": "我是中国人"}
4.自定义分词器
待补充
来源:https://blog.csdn.net/weixin_54158370/article/details/140017954
来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。
Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利
苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司
南京思必达教育科技有限公司版权所有 百度统计