ElasticSearch

es基础概念

  1.  elasticsearch是一个分布式搜索引擎,是面向文档存储的(json格式),主要用于数据的存储、计算、分析(特别全文搜索);可以快速的从海量数据中找到所需要的内容;
  2.  倒排索引:先找到词条,再根据词条所对应的文档找到相应的数据;
  3.  文档:可以理解为mysql表中的一条数据;

 

  

分词器

English 分词器(内置)

  1. 按空格和标点符号分词
  2. 支持词干提取(如将 "running" 转为 "run")
  3. 支持停用词过滤(如去除 "the"、"is" 等常见词)
  4. 支持大小写转换(通常将单词转为小写)

IK 分词器(需手动安装)

  作用:a. 创建倒排索引时对文档进行分词

       b. 用户搜索时,对输入的内容进行分词

  模式:

     a. ik_smart: 粗粒度,即判断为是一个词后不再细分

      b. ik_max_word:细粒度, 即使判断是一个词后仍继续判断;优点是搜索到的概率更大,但内存占用会较大;

 

ES与MySQL的对比

  1.  mysql擅长事务类型操作,可以确保数据的安全性以及一致性(ACID)
  2. es擅长海量数据的搜索、分析、计算
  3. 在实际开发过程中,一般使用MySQL作为主数据库保存完整的数据,然后将数据同步到ES中,便于后面的全文搜索

注:DSL采用Restful风格接口

Kibana

作用

专门为ElasticSearch开发的,主要用于数据查询、数据可视化

Dev tools

 

基本增删改查

// 查询索引是否存在
HEAD test

// 创建索引
PUT /test/
{
  "settings": {
    "index":{
      "number_of_shards": 3,
      "number_of_replicas": 0
    }
  },
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_point"
      },
      "device_id":{
        "type": "long"
      }
    }
  }
}

// 查看索引定义的字段
GET /test/_mapping

// 删除索引
DELETE test
// 插入数据
put /test/_doc/1
{
  "location": {
    "lat": 40.7128,
    "lon": -74.0060
  },
  "device_id": "001"
}

// 查询数据
GET /test/_doc/1

// 修改数据
POST /test/_update/1
{
  "doc": {
    "device_id": "002"
  }
}

// 删除数据
DELETE /test/_doc/1

 

参考链接

【1】https://juejin.cn/post/7460023342592835647#heading-23

posted @ 2024-01-09 21:40  先娶国王后取经  阅读(69)  评论(0)    收藏  举报