ES实践

122 阅读3分钟

1. 安装

  1. 本地下载elasticsearch-7.16.3,启动bin目录下的elasticsearch
  2. 访问http://localhost:9200 出现如下,测试成功
  3. ElasticSearch(简称为es)是一个开源的高扩展的分布式全文检索引擎,它可以近乎 实时存储、检索数据
  4. 官网:www.elastic.co/cn/
  5. 下载地址: www.elastic.co/cn/download…

image.png

  1. 安装可视化界面 es-head 插件

  2. es解决跨域:

    elasticsearch.yml http.cors.enabled: true http.cors.allow-origin: "*" xpack.security.enabled: false

    npm run start 启动es-head

image.png

  1. 索引就是库,es-head只用来做数据的展示,kibana用来查询

image.png

  1. 安装kibana 解压有点慢,直接运行bin目录下的kibana,访问http://localhost:5601/进行测试

image.png

kibana汉化

image.png

目录: /Users/dingyawu/Documents/es/kibana-7.16.3-darwin-x86_64/config

7.kibana用到的命令

GET /.kibana

get _cat/indices
查看有哪些索引


  1. es概念
集群,节点,索引,类型,文档,分片,映射是什么?
indices 是索引的意思
elasticsearch(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)。

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

image.png

image.png

  1. ik分词器

ik提供了两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分!一会我们测试!

如果要使用中文,建议使用IK分词器

下载地址:github.com/medcl/elast… 下载完成之后,解压放在elasticsearch的plugins文件下

重新启动ES以后启动会看到这个

image.png

或者用这个命令可以查ES加载的插件

image.png

分析两种分词器方式的不同

GET _analyze 
{
  "analyzer": "ik_max_word",
  "text": "我们都一样"
  
}


GET _analyze 
{
  "analyzer": "ik_smart",
  "text": "我们都一样"
  
}

配置自定义的分词器,

配置目录:/Users/dingyawu/Documents/es/elasticsearch-7.16.3/plugins/ik/config

重启ES

image.png

image.png

10 . kibana 操作

创建索引
PUT /yawutest
    {
      "mappings":{
        "properties":{
          "name":{
            "type":"text"
          },
          "age":{
            "type":"long"
          },
          "sex":{
            "type": "long"
          }
        }
      }
    }


查看索引的信息
get yawutest
 
获取数据 
GET /yawutest/_doc/4

修改数据
POST /yawutest/_doc/4/_update
{
  "doc":{
    "name": "dingupdate"
  }
  
}

删除索引
DELETE yawutest

精确查询
GET /yawu/user/_search?q=name:dingyawulearnjava


只更新列出的部分
POST /yawu/user/1/_update
{
  "doc":{
    "name": "dingyawulearnjava"
  }
}

搜索模糊查询。keyword类型能精确匹配,_source对搜索结果过滤
GET /yawu/user/_search
{
  "query":{
    "match":{
      "desc":"一顿操作"
    }
  },
  "_source":["name"]
} 

分页排序查询
GET /yawu/user/_search
{
  "query":{
    "match":{
      "desc":"一顿操作"
    }
  },
  "sort":[
    {
      "age":{
        "order":"asc"
      }
    }
  ],
  "from":0,
  "size":1
  
} 

多条件查询
GET /yawu/user/_search
{
  "query":{
    "bool":{
      "must":[
        {
          "match":{
            "desc": "一顿操作"
          }
        },
        {
          "match":{
            "age":30
          }
        }
      ]
    }
  }
} 

image.png