Elasticsearch初始

说明:以下内容引用黑马,如有侵权请联系删除

第一章 全文检索Lucene

检索:查询(以少查多)

1.1 基本概念

数据分类

我们生活中的数据总体分为两种:结构化数据和非结构化数据。

  • 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
  • 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件。

结构化数据查询

在这里插入图片描述
结构化数据的查询:

  • 数据库中数据存储有规律的,有行有列而且数据格式、数据长度都是固定的。
  • 通过添加索引等手段,保证查询效率
  • 针对模糊查询:如果其左侧有%,索引失效存在效率问题
  • 对于复杂词汇,不能分词处理。

非结构化数据查询

(1)顺序扫描法(Serial Scanning)
所谓顺序扫描:依次查询每个文档中的所有内容,是否包含给定的词汇。如利用windows的搜索也可以搜索文件内容,效率极低。

(2)全文检索(Full-text Search)
将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。

倒排索引

在这里插入图片描述
在这里插入图片描述
正向:由诗名想到诗句
反向:由诗句想到诗名

倒排索引:将文档中的内容进行分词,形成词条。然后记录词条和数据的唯一表示(id)的对象关系,形成的产物即为倒排索引(词条和数据之间的关系)。

倒排索引结构也叫反向索引结构,包括索引和文档两部分,索引即词汇表,它的规模较小,而文档集合较大

1.2 全文检索Lucene

Lucene是apache 下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。

1.3 全文检索的应用场景

对于数据量大、数据结构不固定的数据可采用全文检索方式搜索,比如百度、Google等搜索引擎、论坛站内搜索、电商网站站内搜索等。

1.4 Lucene的执行流程

Lucene : apache提供的全文检索引擎。

索引和搜索的流程图

在这里插入图片描述
1、左侧对要搜索的原始内容进行索引构建一个索引库,索引过程包括:
确定原始内容即要搜索的内容–>采集文档–>创建文档–>分析文档–>索引文档
2、右侧表示搜索过程,从索引库中搜索内容,搜索过程包括:
用户通过搜索界面–>创建查询–>执行搜索,从索引库搜索–>渲染搜索结果
在这里插入图片描述

创建索引

我们以一个招聘网站的搜索为例,比如说智联招聘,在网站上输入关键字搜索显示的内容不是直接从数据库中来的,而是从索引库中获取的,网站的索引数据需要提前创建的。以下是创建的过程:

  • 获得原始文档:就是从mysql数据库中通过sql语句查询需要创建索引的数据
  • 创建文档对象,把查询的内容构建成lucene能识别的Document对象获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档(Document),文档中包括一个一个的域(Field),这个域对应就是表中的列。注意:每个Document 可以有多个Field,不同的 Document 可以有不同的Field,同一个Document可以有相同的Field (域名和域值都相同)
    每个文档都有一个唯一的编号,就是文档id。
  • 分析文档
    将原始内容创建为包含域(Field)的文档(document),需要再对域中的内容进行分析,分析的过程是经过对原始文档提取单词、将字母转为小写、去除标点符号、去除停用词等过程生成最终的语汇单元,可以将语汇单元理解为一个一个的单词。分好的词会组成索引库中最小的单元: term,一个term由域名和词组成
  • 创建索引,对所有文档分析得出的语汇单元进行索引,索引的目的是为了搜索,最终要实现只搜索被索引的语汇单元从而找到Document(文档)。

查询索引

查询索引也是搜索的过程。搜索就是用户输入关键字,从索引(index)中进行搜索的过程。根据关键字搜索索引,根据索引找到对应的文档
在这里插入图片描述

  • 创建用户接口:用户输入关键字的地方
  • 创建查询指定查询的域名和关键字
  • 执行查询
  • 渲染结果(结果内容显示到页面上关键字需要高亮)

第二章 Elasticsearch介绍和安装

2.1 简介

简介

在这里插入图片描述

  • Elasticsearch是Elastic公司提供的一个基于Lucene的搜索服务器
  • 是一个分布式,高扩展,高实时的搜索与数据分析引擎
  • 基于RestFull的web调用接口,大大简化搜索开发流程
  • Elasticearch是用java语言开发的,开源的目前极其流行的企业级搜索引擎
  • Elastic官网: https://www.elastic.colcnl
    在这里插入图片描述

与数据库对比

  • MySQL有事务,而Elasticearch没有事务,所以删除的数据无法恢复
  • Elasticearch没有外键的特性
  • MySQL注重数据的一致性和持久,Elasticearch提供便捷,搞笑的检索查询
    在这里插入图片描述

2.2 安装Elasticsearch

es服务器的版本:6.2.4 (7.x)

win10环境下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)修改内存占用大小
练习阶段为了防止内存占用过多导致的启动失败,推荐修改虚拟机内存。找到安装目录config/jvm.options文件如图修改
在这里插入图片描述
在这里插入图片描述
(5)测试访问
双击elasticsearch.bat启动之后,后台输入如下内容
在这里插入图片描述

  • 可以看到绑定了两个端口:
  • 9300:集群节点间通讯接口,接收tcp协议
  • 9200:客户端访问接口,接收Http协议
  • 我们在浏览器中访问: http://127.0.0.1:9200
    在这里插入图片描述

Linux环境下安装

(1)上传包到指定目录
在这里插入图片描述
(2)解压包到指定目录
tar -zxvf /package/elasticsearch-6.2.4.tar.gz -C /es/

(3)查看
在这里插入图片描述
(4)修改配置文件
进入到es安装目录下的config文件夹中,修改elasticsearch.yml 文件

#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es

#节点名称
node.name: node-1

#设置索引数据的存储路径
path.data: /es/data/

#设置日志的存储路径
path.logs: /es/log

#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0

#设置对外服务的http端口
http.port: 9200

#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1","10.10.10.34:9200"]

network.host: 0.0.0.0
修改Elasticsearch的配置,使其支持外网访问。在浏览器中,访问http://xxxx:9200/(xxxx是运行elasticsearch的服务器的ip地址)即可。否则这可以在本机使用。

(5)ES root用户启动失败can not run elasticsearch as root
在这里插入图片描述
es 因为安全问题拒绝使用root用户启动

解决方案

  • 添加用户组es,及用户es 密码password
  • 给用户es:es添加指定目录拥有权限
groupadd es
useradd es -g es -p password # -g 指定组 -p 指定密码
chown -R es:es  /es # -R : 处理指定目录下的所有文件

切换到用户,并执行es

su es
cd /es/elasticsearch-6.2.4/bin/
./elasticsearch 
./elasticsearch -d # 后台方式启动

(6)启动报错
在这里插入图片描述
解决办法

vim /etc/security/limits.conf
添加如下:
 * soft nofile 65536
 * hard nofile 131072
es soft nproc 4096
es hard nproc 4096

2.3 安装kibana

什么是Kibana

在这里插入图片描述

  • Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具;
  • 利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。
  • 提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。

win10安装

在这里插入图片描述
一路next
在这里插入图片描述
在这里插入图片描述
解压即可

(3)配置运行
进入安装目录下的config目录,修改kibana.yml文件:修改elasticsearch服务器的地址:

elasticsearch.url: "http://192.168.1.10:9200"

(4)运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

控制台

在这里插入图片描述

2.4安装ik分析器

Lucene的IK分词器早在2012年已经没有维护了,现在我们要使用的是在其基础上维护升级的版本,并且开发为Elasticsearch的集成插件了,与Elasticsearch一起维护升级,版本也保持一致,最新版本:6.2.4
https:/lgithub.com/medcl/elasticsearch-analysis-ik

安装
(1)解压elasticsearch-analysis-ik-6.2.4.zip后,将解压后的文件夹拷贝到elasticsearch-6.2.4\plugins下,并重命名文件夹为ik
在这里插入图片描述
(2)重启es

(3)测试

在kibana控制台输入下面的请求:

POST _analyze
{
  "analyzer": "ik_max_word",
  "text":     "我是中国人"
}

结果:

{
  "tokens": [
    {
      "token": "我",
      "start_offset": 0,
      "end_offset": 1,
      "type": "CN_CHAR",
      "position": 0
    },
    {
      "token": "是",
      "start_offset": 1,
      "end_offset": 2,
      "type": "CN_CHAR",
      "position": 1
    },
    {
      "token": "中国人",
      "start_offset": 2,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 2
    },
    {
      "token": "中国",
      "start_offset": 2,
      "end_offset": 4,
      "type": "CN_WORD",
      "position": 3
    },
    {
      "token": "国人",
      "start_offset": 3,
      "end_offset": 5,
      "type": "CN_WORD",
      "position": 4
    }
  ]
}

第三章 使用kibana对索引库操作

3.1 基本概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李贺梖梖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值