| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 126.ElasticSearch(一):es、head、kibana下载和安装,es基本概念,ik分词器的设置 -> 正文阅读 |
|
[大数据]126.ElasticSearch(一):es、head、kibana下载和安装,es基本概念,ik分词器的设置 |
目录 一、ElasticSearch基本概念1.Lucene和ElasticSearch关系Lucene是一套信息检索工具包,是一个jar包。 Lucene包含索引结构,读写索引的工具,排序,搜索规则等等,不包含搜索引擎系统。 ElasticSearch是基于Lucene做一个封装和增强 2.ElasticSearch概述ElasticSearch又叫es,是一个开源的高拓展的分布式全文检索引擎,它可以近乎实时的存储、检索数据。es使用java开发并使用Lucene作为其核心来实现所有索引和引擎功能,但是它的目的是通过简单地RESTful API来隐藏Lucene的复杂性,从而让搜索变得更简单。 es是一个实时分布式搜索和分析引擎,能以前所未有的速度处理大数据。它用于全文搜索,结构化搜索,分析。 3.es和solr比较(1)对单纯的已有的数据进行搜索:solr更快 (2)当实时建立索引时,solr会产生io阻塞,es会快得多 (3)随着数据里越来越大,solr效率会越来越低,es完全没影响 4.ELK什么是ELK? ELK = ElasticSearch + Logstash + Kibana,也被称为Elastic Stack 其中es作为底层支持架构,用来做搜索。Lgostash是ELK的中央数据流引擎,拥有将不同格式数据过滤输出到不同目的地。Kibana将数据友好展示,并提供实时分析功能。 二、ES,head插件,Kibana插件的安装1.下载windows版本es注:jdk最低要1.8及以上!!! 官网地址:https://www.elastic.co/cn/downloads/elasticsearch 注:实际操作中我们下载的是7.6.1的windows版本。 ?直接解压就可以用了。 启动好之后登陆9200端口可以看到一串话表示成功: ?2.安装head可视化界面(1)下载进入github:https://github.com/mobz/elasticsearch-head#running-with-built-in-server 然后下载: (2)下载安装node.js和gruntnode.js: node下载地址:https://nodejs.org/en/download/,下载对应环境的node版本安装即可,安装步骤略过了。 安装过程结束后,在dos窗口查看是否安装成功,使用命令:node -v。 grunt: 在node安装路径下,使用命令安装:npm install -g grunt-cli 安装grunt。 安装结束后,使用命令grunt -version查看是否安装成功。 (3)解决跨域问题在elasticsearch.yml添加:?
然后重启es的bat文件: ?(4)启动head
注:如果显示你cnpm不是内部或外部命令:
成功,且没有跨域问题:? 简单的可以把索引当成数据库。 3.安装kibana(1)下载官网:https://www.elastic.co/cn/kibana/ 下载地址:https://www.elastic.co/cn/downloads/kibana 注:要和es的版本一致,我们学习的时候下载windows版本 ?(2)启动解压好后双击bat文件启动: ? (3)开发工具,汉化点击左边Dev Tools开发工具:
?再来做一下汉化: ? ?修改完汉化后重启项目,一个字:爽! 三、ES核心概念理解1.es与数据库对比es是面向文档。一切内容都是json。我们可以对照关系型数据库理解es:
es中可以包含多个索引(数据库),每个索引中包含多个类型(表),每个类型包含多个文档(行),每个文档包含多个列(字段) 2.物理设计es在后台把每个索引分成多个分片,每片分片可以在集群中的不同服务器间迁移。 如果只启动一个es那它一个人也是一个集群。默认的集群名称是elasticsearch 3.逻辑设计一个索引类型中,包含多个文档,当我们索引一篇文章时,通过这样的顺序查找:索引==>类型==>文档ID。通过这个组合我们就能索引到某个具体的文档。 我自己的简单理解:一个大的json就是索引,json里的key:value就是文档,而key:value对应的类型映射就是类型。 (1)文档索引和搜索数据最小单位是文档,文档有几个重要属性:
(2)类型类型中对于字段的定义称为映射,比如name映射为字符串类型。 一个json你添加一个key:value,es会去猜你这个value的值是什么类型,这个猜有可能会猜错,所以我们最好就是提前定义好需要的映射,每个映射的值是什么类型。后面操作的时候就按照定义的来就行。 (3)索引索引是映射类型的容器,es中的索引是一个非常大的文档集合。索引存储了映射类型的字段和其他设置,然后他们被存储到各个分片上 4.节点和分片一个集群至少有一个节点,而一个节点就是一个elasticsearch进程。 节点可以有多个索引。如果你创建索引,那么索引将会有5个分片(主分片)。每个主分片会有都会有一个副分片(复制分片)。(分片可以认为一个索引被分成了5个部分,每部分叫一个分片) 如果集群有多个节点,一个节点创建了一个索引,这个索引有5个分片,这5个分片不一定都在同一个节点下,有可能在不同的节点下。实际上,每个分片 都是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使得es在不扫面全部文档的情况下,就能告诉你哪些文档包含特定的关键词。 5.倒排索引上面说了,每个分片都是一个Lucene索引,每个分片都包含倒排索引的文件目录。 常规索引是key:value铺开,有多少条数据就有多少key:value,时间复杂度为n。 倒排索引可以理解为value:keys。包含某个value的key分别是哪些,然后每次要查找指定value的时候就可以直接在keys里去找了,而不用遍历所有。 6.es的索引和Lucene索引的对比在es中索引被分为多个分片,每份分片是一个Lucene的索引。所以一个es索引是多个Lucene索引组成的。 四、IK分词器1.什么是分词器分词:把一段中文或者别的划分为一个个的关键字,我们在搜索的时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,这不符合要求,因此需要中文分词器ik来解决这个问题。 2.ik中的两个分词算法ik_smart:最少切分 ik_max_word:最细粒度划分 3.下载,安装,启动(1)下载注意版本:https://github.com/medcl/elasticsearch-analysis-ik/releases (2)放到es的plugins目录下注1:路径不要有中文 注2:压缩包要删掉,不然有可能启动不起来 (3)重启es注1:重启 的时候关闭head和kibana和es,再重启 可以看到我们加载了ik,这样就是成功了: ?也可以bin下重新开一个cmd,输入:
(4)重启kibana测试ik_smart: ik_max_word: 4.自定义分词现在有一个问题,如果我们输入“我爱徐鹏”,我们要把徐鹏作为一个整体,但是因为默认汉字是单个拆分,不符合我们的需求。我们需要自定义“徐鹏”,让es能够将其视为一个整体。? (1)修改IKAnalyzer.cfg.xml文件.进入es的plugins,找到IKAnalyzer.cfg.xml文件: ?自定义一个文件名称: (2)新建自定义文件我们然后新建自定义文件: 注:新建时最好复制其他的dic再粘贴,避免编码等问题 ? ?(3)重启es和kibana,并测试我们发现,徐鹏已经作为一个整体用来查询了 五、打赏请求如果本篇博客对您有所帮助,打赏一点呗,谢谢了呢~ ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 2:55:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |