elasticsearch使用

elasticsearch使用

简介

  • elasticsearch是一种开源的搜索引擎,可以从海量数据中快速找到需要的内容。

  • elastic stack(ELK):以ES为核心的技术栈

  • elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域

    elasticsearch使用_第1张图片

  • ES是核心,其他的组件可以被替换

  • 优势

    • 支持分布式、水平扩展
    • 提供restful风格的接口,适应多语言

ES核心——倒排索引

  • 正向索引

    • 查找过程:先查找文档,然后查询文档中是否含有关键词,如果有加入结果集

    • mysql中采用正向索引

      elasticsearch使用_第2张图片
  • 倒排索引

    • 文档 每一条数据
    • 词条:将文档按照某个规则划分词语
    elasticsearch使用_第3张图片
  • 搜索过程

    • 分词
    • 在倒排索引库根据分词结果查找文档id
    • 根据id查询文档
    • 返回结果集
    elasticsearch使用_第4张图片

ES中的概念

  • 文档

    • 在es中存储的数据,使用json格式
    • elasticsearch使用_第5张图片
  • 索引

    • 相同类型文档的集合,类似于数据库中的表
    • elasticsearch使用_第6张图片
  • 映射(mapping)

    • 对索引中字段的约束例如是string、还是int
  • Mysql与ES的对比

    • 两者是互补的关系
    • mysql是擅长事务类型的操作,确保数据的一致性
    • ES擅长海量数据的存储,查询分析

    elasticsearch使用_第7张图片

es的安装(略)

  • 安装es

  • 安装kibanna

  • 安装ik分词器

    elasticsearch使用_第8张图片

es操作

mapping

  • 类型 type
    • 字符类型
      • text:可分词的文本
      • keyword:不可分词的文本
    • 数值类型:long、integer、float、double
    • 日期类型:date
    • 对象类型:object
elasticsearch使用_第9张图片
  • index:是否创建倒排索引 默认值为true
  • analyzer:分词器
  • proterties:子属性

索引库的操作

  • 创建索引库

    PUT /lmx
    {
      "mappings": {
        "properties": {
          "info":{
            "type": "text"
            , "analyzer": "ik_smart"
          },
          "name":{
            "type": "text"
            , "analyzer": "ik_smart"
          },
          "email":{
            "type": "keyword"
          },
          "preson":{
            "properties": {
              "age":{
                "type":"integer",
                "index":"false"
              }
            }
          }
        }
      }
    }
    
  • 获取索引库信息

GET /lmx
  • 删除索引库
DELETE /lmx
  • 更改索引库
    • 在es中,不允许修改字段名,只允许添加新的字段名,防止倒排索引失效
	PUT /lmx/_mapping
	{
	  "properties":{
	    "address":{
	      "type":"text",
	      "analyzer":"ik_smart"
	      
	    }
	  }
	}

文档的操作

  • 增加
POST /lmx/_doc/1  
{
  "address":"陕西省",
  "email":"[email protected]",
  "info":"测试",
  "name":"两面性",
  "preson":{
    "age":10
  }
}
  • 查询
GET /lmx/_doc/1
  • 修改
    • 全量修改:删除旧文档,插入新文档(又能删除、又能修改)
	PUT /lmx/_doc/1
	{
	  "address":"陕西省",
	  "email":"[email protected]",
	  "info":"测试",
	  "name":"两面性",
	  "preson":{
	    "age":10
	  }
	}
  • 增量修改
POST /lmx/_update/1
	{
	  "doc":{
	    "name":"修改测试"
	  }
	}
  • 删除
DELETE /lmx/_doc/1

你可能感兴趣的:(es)