简介

官网地址
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。Elasticsearch 属于apache组织。

ELK

ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。是一个通用的日志框架。
kibana官网

可视化

es可视化的方式很多,像上面elk中的kibana是一种,我认为最简单的方式是使用head谷歌浏览器插件。
es-head插件下载
如果出现跨域问题,改下es的elasticsearch.yml文件

http.cors.enabled: true
http.cors.allow-origin: "*"

分片

elasticsearch在后台把每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移!
就算只启动了一个es也是一个集群,默认的集群名elasticsearch。
一个集群至少有一个节点,而一个节点就是一个elasricsearch进程,节点可以有多个索引默认的,如果你创建索引,那么索引将会有个5个分片(primary shard,又称主分片)构成的,每一个主分片会有一个副本(replica shard,又称复制分片)
kuangstudy9957cdf4-ed03-497d-b701-9082b6e8d78a
上图是一个有3个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失。实际上,一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使得elasticsearch在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。

和mysql对比

  • 数据库(database): 索引(indices)
  • 表(tables): types
  • 行(rows): documents
  • 字段(columns): fields

restful操作

es提供了restful接口的方式操作数据
官方文档
wx_20220515222710
wx_20220515225630.png

扩展:通过get _cat/ 可以获取ElasticSearch的当前的很多信息!

GET _cat/indices
GET _cat/aliases
GET _cat/allocation
GET _cat/count
GET _cat/fielddata
GET _cat/health
GET _cat/indices
GET _cat/master
GET _cat/nodeattrs
GET _cat/nodes
GET _cat/pending_tasks
GET _cat/plugins
GET _cat/recovery
GET _cat/repositories
GET _cat/segments
GET _cat/shards
GET _cat/snapshots
GET _cat/tasks
GET _cat/templates
GET _cat/thread_pool

数据类型

es有着非常丰富的字段类型,并且当你不指定的时候会自动匹配类型。但是elasticsearch也可能猜不对,所以最安全的方式就是提前定义好所需要的映射,这点跟关系型数据库一样了。

复杂查询

1.查询匹配

  • match:匹配(会使用分词器解析(先分析文档,然后进行查询))
  • _source:过滤字段
  • sort:排序
  • form、size 分页
    20201203002017.png

2.多条件查询(bool)

  • must 相当于 and
  • should 相当于 or
  • must_not 相当于 not (… and …)
  • filter 过滤
    20201203150628.png

3.匹配数组

  • 貌似不能与其它字段一起使用
  • 可以多关键字查(空格隔开)— 匹配字段也是符合的
  • match 会使用分词器解析(先分析文档,然后进行查询)
    20201203150635.png

4.精确查询

term 直接通过 倒排索引 指定词条查询
适合查询 number、date、keyword ,不适合text
20201203150641.png

5.text和keyword

  • text:
    支持分词,全文检索、支持模糊、精确查询,不支持聚合,排序操作;
    text类型的最大支持的字符长度无限制,适合大字段存储;
  • keyword:
    不进行分词,直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。
    keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。

6.高亮查询

20201203150652.png