自动采集更新网站源码,创新的医疗网站建设,wordpress像微博,网站建设收费标准讯息Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么#xff1f;IK分词器有几种模式#xff1f;IK分词器如何拓展词条#xff1f;如何停用词条#xff1f; 认识Elasticsearch
Elasticsearch的官方网站如下 Elasticsearch官网
Ela… Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么IK分词器有几种模式IK分词器如何拓展词条如何停用词条 认识Elasticsearch
Elasticsearch的官方网站如下 Elasticsearch官网
Elasticsearch是由elastic公司开发的一套搜索引擎技术它是elastic技术栈中的一部分。完整的技术栈包括
Elasticsearch用于数据存储、计算和搜索Logstash/Beats用于数据收集Kibana用于数据可视化 整套技术栈被称为ELK经常用来做日志收集、系统监控和状态分析等等
整套技术栈的核心就是用来存储、搜索、计算的Elasticsearch接下来安装的核心也是Elasticsearch 要安装的内容包含2部分
elasticsearch存储、搜索和运算kibana图形化展示
首先Elasticsearch不用多说是提供核心的数据存储、搜索、分析功能的。 然后是KibanaElasticsearch对外提供的是Restful风格的API任何操作都可以通过发送http请求来完成。不过http请求的方式、路径、还有请求参数的格式都有严格的规范。这些规范我们肯定记不住因此我们要借助于Kibana这个服务。 Kibana是elastic公司提供的用于操作Elasticsearch的可视化控制台。它的功能非常强大包括
对Elasticsearch数据的搜索、展示对Elasticsearch数据的统计、聚合并形成图形化报表、图形对Elasticsearch的集群状态监控它还提供了一个开发控制台DevTools在其中对Elasticsearch的Restful的API接口提供了语法提示
安装Elasticsearch
采用的是elasticsearch的7.12.1版本由于8以上版本的JavaAPI变化很大在企业中应用并不广泛企业中应用较多的还是8以下的版本。 创建网络因为需要部署kibana容器因此需要让es和kibana容器互联。
docker network create es-net拉取镜像
docker pull elasticsearch:7.12.1创建挂在节点
mkdir -p /usr/share/elasticsearch/data /usr/share/elasticsearch/plugins启动命令
docker run -d \--name es \--restartalways \-e ES_JAVA_OPTS-Xms512m -Xmx512m \-e discovery.typesingle-node \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1访问9200验证 ip:9200
安装Kibana
拉取镜像
docker pull kibana:7.12.1创建挂在节点
mkdir -p /usr/share/kibana/config /usr/share/kibana/data启动命令
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTShttp://es:9200 \
--networkes-net \
-p 5601:5601 \
kibana:7.12.1测试Kibana是否安装成功 http://IP:5601
安装IK分词器
中文分词往往需要根据语义分析比较复杂这就需要用到中文分词器例如IK分词器。IK分词器是林良益在2006年开源发布的其采用的正向迭代最细粒度切分算法一直沿用至今。
执行语句
docker exec -it es ./bin/elasticsearch-plugin install https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-7.12.1.zip注执行时注意版本号版本应与安装的Elasticsearch版本相同
如果网速较差也可以选择离线安装。 https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-7.12.1.zip下载文件 上传到 挂载卷下 ik 文件夹下 查看挂载卷
docker volume inspect es-pluginsdocker restart esIK分词器包含两种模式
ik_smart智能语义切分ik_max_word最细粒度切分
我们在Kibana的DevTools上来测试分词器首先测试Elasticsearch官方提供的标准分词器
POST /_analyze
{analyzer: standard,text: 程序员学习java太棒了
}{tokens : [{token : 程,start_offset : 0,end_offset : 1,type : IDEOGRAPHIC,position : 0},{token : 序,start_offset : 1,end_offset : 2,type : IDEOGRAPHIC,position : 1},{token : 员,start_offset : 2,end_offset : 3,type : IDEOGRAPHIC,position : 2},{token : 学,start_offset : 3,end_offset : 4,type : IDEOGRAPHIC,position : 3},{token : 习,start_offset : 4,end_offset : 5,type : IDEOGRAPHIC,position : 4},{token : java,start_offset : 5,end_offset : 9,type : ALPHANUM,position : 5},{token : 太,start_offset : 9,end_offset : 10,type : IDEOGRAPHIC,position : 6},{token : 棒,start_offset : 10,end_offset : 11,type : IDEOGRAPHIC,position : 7},{token : 了,start_offset : 11,end_offset : 12,type : IDEOGRAPHIC,position : 8}]
}
可以看到标准分词器智能1字1词条无法正确对中文做分词。 我们再测试IK分词器
POST /_analyze
{analyzer: ik_smart,text: 程序员学习java太棒了
}{tokens : [{token : 程序员,start_offset : 0,end_offset : 3,type : CN_WORD,position : 0},{token : 学习,start_offset : 3,end_offset : 5,type : CN_WORD,position : 1},{token : java,start_offset : 5,end_offset : 9,type : ENGLISH,position : 2},{token : 太棒了,start_offset : 9,end_offset : 12,type : CN_WORD,position : 3}]
}IK分词器无法对一些新的词汇分词如“泰裤辣”等测试一下
POST /_analyze
{analyzer: ik_smart,text: 程序员泰裤辣
}{tokens : [{token : 程序员,start_offset : 0,end_offset : 3,type : CN_WORD,position : 0},{token : 泰,start_offset : 3,end_offset : 4,type : CN_CHAR,position : 1},{token : 裤,start_offset : 4,end_offset : 5,type : CN_CHAR,position : 2},{token : 辣,start_offset : 5,end_offset : 6,type : CN_CHAR,position : 3}]
}
所以要想正确分词IK分词器的词库也需要不断的更新IK分词器提供了扩展词汇的功能 增加词典 进入 挂在卷下 ik/config 也可以 直接在本地修改好后直接上传到 服务器 推荐 修改文件 IKAnalyzer.cfg.xml 然后修改 vim ext.dic 然后重启 es 再次请求es得
{tokens : [{token : 程序员,start_offset : 0,end_offset : 3,type : CN_WORD,position : 0},{token : 泰裤辣,start_offset : 3,end_offset : 6,type : CN_WORD,position : 1}]
}分词器的作用是什么
创建倒排索引时对文档分词用户搜索时对输入的内容分词
IK分词器有几种模式
ik_smart智能切分粗粒度ik_max_word最细切分细粒度
IK分词器如何拓展词条如何停用词条
利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典和停用词典在词典中添加拓展词条或者停用词条