ElasticSearch学习(二)

ElasticSearch基础学习


一、ES核心概念


1.与MySQL对比
  1. MySQL — ES(一切都是JSON)
  2. 数据库 (database)— 索引(indices
  3. 表(table)— type(慢慢弃用)
  4. 行(row)— documents(文档)
  5. 字段(columns)— fields

2.物理设计
  1. ES在后台把每个索引划分成多个切片,每个分片可以在不同的服务器间迁移。
  2. 默认就是一个集群,集群名默认就是elasticsearch。
  3. 节点和分片:
    i.一个集群至少有一个节点,而一个节点就是一个es进程,节点可以有多个索引默认的。
    ii.如果创建索引,那么索引将会有五个主分片(分片就倒排索引)构成,每个主分片都有一个复制分片(主分片和复制分片都不在同一节点上。)
  4. 倒排索引
    i.在es不扫描全部文档的情况下,就能知道那些文档包含特定的关键字。
    ii.倒排索引采用Lucene倒排索作为底层。这种索引适用于全文快速索引。
    iii.为了创建倒排索引,我们首先要将每个文档拆分成独立的词(或者称为词条),然后创建一个包含所有不重复的词条的排序列表,然后列出每个词条出现在那个文档。
3.逻辑设计
  1. 文档:自我包含,一篇文档同时包含字段和值,也就是同时包含(key:value);可以是层次型的,一个文档可以包含自文档。(就是一个json对象);文档可以想象成,就是我们的一条条数据。
  2. 类型:类型是文档的逻辑容器,一般用的很少,或者先定义好再使用。
  3. 索引:索引是映射类型的容器,es中索引是个非常大的集合。索引存储了映射类型的字段和其他设置,然后被存储再各个分片上。
  4. 索引和搜索数据的最小单位是文档。
  5. 一个索引可以包含多个文档。

4.小结
  1. .一个ES索引就是由多个Lucene索引构成的。
  2. 先建索引,再设置字段类型,将文档导入即可。

二、IK分词器


1.定义

即把一段中文或者别的划分成一个个的关键字。(默认是把每个字看成一个词)。


2.下载和安装
  1. 在Githup直接下载;上面的百度网盘中也有;下载完成之后,直接放入到es的插件中;完成之后需要全部重启。
  2. 可以通过dos窗口的(elasticsearch-plugin list )查看ik分词器是否被加载完成。注意需要进入到相应的目录下命令才有效。
  3. 使用Kibana进行测试。

3.两种分词算法
  1. ik_smart(最少切分):1.不会切成有重复的词。
  2. ik_max_word(最细粒度划分):1.穷尽所有词库的可能。
  3. 在ik分词器目录下的condig配置中进行增加增加的.dic文件,并将新增的文件到ik的配置文件中,重启即可使用。

三、索引的操作


1.创建索引
  1. PUT 命令(localhost:9200/索引名称/类型名称/文档/id)
  2. GET 索引名称 (获取索引的信息)

2.查看索引
  1. GET _cat/… 可以查看很多东西

3.修改索引
  1. PUT 命令(localhost:9200/索引名称/类型名称/文档/id)
  2. POST/索引名/类型名(可以使用默认的_doc)/文档id {请求体} (暴力修改)

4.删除索引
  1. DELETE 索引名称(文档)

四、文档的操作


1.基本操作(增删改查)
  1. 和前面相同的。

2.复杂操作(排序、分页、模糊、高亮)
  1. GET 索引名/类型名/_search {“query”:{查询命令}}
  2. GET 索引名/类型名/_search {“query”:{查询命令},"_source":[“xxx”,“xxx”]} (_source为结果的过滤;xxx为某字段)
  3. GET 索引名/类型名/_search {“query”:{查询命令},“sort”:[{“xxx”:{“order”:“desc”}}]} (sort为排序;XXX为某字段)。
  4. GET 索引名/类型名/_search {“query”:{查询命令},“from”: 0,“size”: 2 (from:从第几条开始,size:显示几条) 分页
  5. GET 索引名/类型名/_search {“query”:{查询命令},“hightlight”:{“pre_tags”:“xxxxx”,“post_tags”:"",“fields”:{“xxx”:{}}} 高亮显示某字段,自定义高亮搜索。

3.小结
  1. Hit:索引和文档的信息;查询的结果总数;查询出来的具体的文档;查看分数。
  2. match:会使用分词器解析。
  3. term:直接精确查询。
  4. text:可以被分词器解析 keyword:被当成一个词,没有被分词。

五、数据类型


  1. 字符串类型(text、keyword)
  2. 数值类型(long、integer、short、byte、double、float、half、float、scaled)
  3. 日期类型(date)
  4. 布尔类型(boolean)
  5. 二进制类型(binary)

六、小结

今天,只是对ES的基础进行了整理和学习,在此记录一下。下一篇继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值