• ElasticSearch 基本概念和基础操作


    安装

    1. ElasticSearch -> 参考官方文档,下载压缩包解压即可使用
    2. ElasticSearch head → 相当于一个可视化工具,用来查看数据 -> 可以直接安装浏览器插件
    3. kibana (查询工具) -> 参考官方文档,下载压缩包解压即可使用
    4. ik 分词器(中文分词器) → GitHub 下载后直接下载放入 plugins 目录 → 在config目录下可以配置自己的词典

    核心概念

    关系型数据库 ElasticSearch
    数据库 database 索引 index
    表 table 类型 type
    行 row 文档 document
    字段 columns 字段 fields

    集群

    集群(cluster) 是一个或多个节点的集合。

    节点

    节点(node) 是一个 elasticsearch 的运行实例,也就是一个进程,多个节点组成集群,节点存储数据,并参与集群的索引、搜索和分析功能。

    索引

    索引(index) 是具有某种相似特性的文档集合。(我感觉索引更像是 MySQL 中的表的概念)特别是7.0版本取消了类型的概念,如果把文档看做一条数据,索引是拥有多个相同结构文档的集合,也就是表。

    文档

    文档(document) 是可以被索引的基本信息单元。JSON文档。

    分片

    分片是索引的水平拆分。当一个索引的数据量太大,可以把一个索引拆分成多个分片,每个分片本身都是具有完整功能的“独立索引”,可以分布在集群中的任何节点上。每个分片都是一个完整的 Lucene 索引。

    一般在创建索引的时候就要预判分片数量并创建,分片的数量理论上不可变更,唯一的办法重建索引。

    副本

    每个分片都可以有一个或多个备份,分片的副本会部署在不同节点上,在分片或节点发生故障时提供高可用性。

    副本也可以用于搜索,可以提高搜索性能和水平扩展吞吐量。类似于主从分离,一主多从。

    分片和副本的区别和联系

    1. 本质上都是完整的 Lucenes 索引
    2. 假设一个索引定义了3个分片、2个副本,那么总共就有9个分片,其中3个主分片,每个分片有2个副本。主分片就是建立索引时首先建立的分片,或者说当主分片失效时会重新选择出一个副本作为主分片
    3. 当索引(插入数据)时,数据会首先到达主分片,然后再把请求分发到其他副本
    4. 当搜索(查询数据)时,主分片和副本都可以接受请求、搜索和分析数据,二者没有区别

    基础操作

    关于索引的基本操作

    创建索引并添加一个数据(这种创建方式貌似已经过时,type将在7.x版本被废弃)

    PUT /索引名/~类型名~/文档id
    {请求体}
    

    /Users/chaohangz/Documents/MyNotebook/image/Untitled.png

    完成了自动增加索引!数据也成功的添加了,这就是我们在初期可以把es当做数据库学习的原因!

    /Users/chaohangz/Documents/MyNotebook/image/Untitled1.png

    创建索引,指定字段类型

    PUT /索引名
    {
      "mappings": {
        "properties": {
    			"字段名": {
            "type": "字段类型"
          },
          "name": {
            "type": "text"
          },
          "age": {
            "type": "long"
          },
          "birthday": {
            "type": "date"
          }
        }
      }
    }
    

    /Users/chaohangz/Documents/MyNotebook/image/Untitled2.png

    查询操作

    通过get请求获取索引具体的信息

    /Users/chaohangz/Documents/MyNotebook/image/Untitled3.png

    创建时插入一条数据,不指定字段类型,es会自动给字段分配类型

    _doc 是在type被废弃后的默认type

    /Users/chaohangz/Documents/MyNotebook/image/Untitled4.png

    扩展命令

    通过 GET /_cat 可以获得es很多信息

    /Users/chaohangz/Documents/MyNotebook/image/Untitled6.png

    修改索引

    有多种方式可选

    /Users/chaohangz/Documents/MyNotebook/image/Untitled7.png

    删除索引和文档

    /Users/chaohangz/Documents/MyNotebook/image/Untitled8.png

    关于文档的基本操作

    简单命令

    添加数据

    /Users/chaohangz/Documents/MyNotebook/image/Untitled9.png

    查询数据

    /Users/chaohangz/Documents/MyNotebook/image/Untitled10.png

    /Users/chaohangz/Documents/MyNotebook/image/Untitled11.png

    复杂查询

    查询出来的hits对象包含哪些东西

    过滤结果,相当于 select name, desc .......

    Untitled

    排序

    Untitled

    分页查询

    布尔查询

    must (相当于 and) 所有条件都要匹配

    image-20210503082409058

    should (相当于 or) 部分条件匹配

    image-20210503082942016

    must not (相当于 not)

    image-20210503083235155

    过滤结果集和进行范围查询

    gt 大于 gte 大于等于 lt 小于 lte 小于等于

    image-20210503083619016

    匹配多个条件,匹配条件越多,分值越高

    image-20210503084341055

    keyword 和 text, 精确匹配和模糊匹配,keyword 类型的字段不会被分词器解析

    image-20210503094122081

    term 精确查询,不使用分词器解析

    match 使用分词器解析

    image-20210503095116507

    高亮显示

    image-20210503095634716

    自定义高亮标签

    image-20210503100027466

    <全文完>

  • 相关阅读:
    java中的线程是如何工作的。
    springcloud 负载均衡之 ribbon。
    eureka 集群的实现方式?
    eureka的简单介绍,eureka单节点版的实现?eureka的自我保护?eureka的AP性,和CP性?
    docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。
    关于自动化测试框架的思想和考虑
    Web应用程序压力测试步骤
    自动化测试工具的选择
    软件测试用例的认识误区
    如何评估软件产品的质量?
  • 原文地址:https://www.cnblogs.com/chaohangz/p/14730194.html
Copyright © 2020-2023  润新知