Elastic search(ES)
⭐

Elastic search(ES)

一、底层技术

  • 文档元数据
    • _index
      • 文档在哪存放
    • _type(7版本之后就没有类型这个概念了)
      • 文档表示的对象类别
    • _id
      • 文档唯一标识
  • 文档格式
    • /{index}/{type}/{id} 确定一个文档
  • 分词
    • 分词器 IK
      • 自增扩展字典
      • 剔除部分词字典
  • 倒排索引
    • 分析器 analyzer
      • 过滤器 character filters
      • 分词 tokenizer
      • 小写 tiken filter
    • 内置的分词器

二、特性

  • 1、分布式
  • 2、全文搜索
  • 3、搜索引擎

三、安装

  • 1、安装ES
    • docker 方式启动
      • mkdir -p /data/elasticsearch/config/ mkdir -p /data/elasticsearch/data/ chmod 777 -R /data/elasticsearch/ ## 注意冒号后面有 空格 echo "http.host: 0.0.0.0" >> /data/elasticsearch/config/elasticsearch.yml docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms128m -Xmx256m" \ -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /data/elasticsearch/data:/usr/share/elasticsearch/data \ -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d docker.elastic.co/elasticsearch/elasticsearch:7.10.1
  • 2、客户端kibana
    • docker 方式启动
      • docker run -d --name kibana \ -e ELASTICSEARCH_HOSTS="http://127.0.0.1:9200/" \ -p 5601:5601 kibana:7.10.1

四、语法

  • 1、添加数据
    • PUT
      • 需要ID
    • POST
      • 有没有ID都可以
  • 2、删除 delete
    • DELETE user/_doc/1
  • 3、更改 update
    • POST user/_update/2 { "doc":{ "age":18 } } // 加doc会做检测,如果相同不进行修改
  • 4、查询 query
    • source 返回部分数据
    • search 条件查询
      • URL: GET _search?q=bobby
      • BODY:
        • GET user/_search { "query":{ "match_all":{} } }
    • match 查询
    • term 精确查询
      • 不会进行分词,不区分大小写。(原子操作)
    • 模糊查询 fuzzy
      • 计算字符串的距离
    • 范围查询 range
    • 符合查询 bool
      • must: 必须满足
      • must_not: 必须不满足
      • should: 非必需满足,会影响评分
      • filter: 必需匹配,不影响评分
  • 5、批量操作(bulk)
    • POSST _bulk {"index":{"_index":"test","id":"1"}} {"name":"bobby"} {"index":{"_index":"test","id":"2"}} {"name":"bobby2"}
  • 6、批量获取 mget
    • GET /_mget { "docs":[ { "_index":"text", "_id":"1" }, { "_index":"text", "_id":"2" } ] }
  • 7、数据类型 mappings
    • 类型
      介绍
      备注
      text
      ㅤ
      会被分词
      keyword
      ㅤ
      不会被分词
      long
      ㅤ
      ㅤ
       

五、常用

GET _cat/indices
查看所有表
PUT
修改数据
ㅤ
ㅤ

六、GO 驱动