es使用概览总结

简介: 如何使用es

ES ElasticSearch


ES是一款开源的海量数据搜索引擎

mysql5.7采用的是innodb数据结构是b+树,mysql架构是为了存海量数据的,在他执行查询操作时,因为采用的是b+树结构,采取的是正向索引,在进行查询时,会将每行数据查询进行对比,直到找到需要的数据,效率很低,还有再进行模糊查询时,可能会导致索引失效,触发全表扫描,导致查询效率太低
正向索引:查询每一条数据进行对比条件,依次查出自己需要的满足条件的数据id

所以我们引入Es ElasticSearch进行海量数据的查询,底层使用的lucene,
采用倒排索引,将词条列出查询分类,将文档(mysql中的一行数据)进行归纳, 在查询时,直接找到我们的词条,将词条中的文档id返回,查询效率大大提高

Es中的关键字:
文档doc==行数据row
字段filed==列数据column
映射mapping==约束schema
DSL==SQL语句
索引index=table表

ES中使用restful风格进行数据操作
get一般用于查询doc文档,查询index索引表
put 添加 修改doc文档或者index索引
delete 删除doc文档或者index索引
post 添加doc文档 或者新增index索引字段
ES中不能修改index索引中已经存在的字段,只能新增

创建mapping映射:
type类型:text,long,double,integer,short,keyword,char,byte,float,boolean,data,obj
index关键字:是否在该字段创建索引,默认true
analyzer:使用哪个分词器
properties:子字段

#1.创建员工索引库
PUT /employee
{
 "mappings": {
   "_doc":{
     "properties":{
       "age":{
         "type":"integer"
       },
       "weight":{
         "type":"double",
         "index":false
       },
       "isMarried":{
         "type":"boolean"
       },
       "info":{
         "type":"text",
         "analyzer": "ik_smart"
       },
       "email":{
         "type":"keyword",
         "index":false
       },
       "score":{
         "type":"double"
       },
       "name":{
         "properties":{
           "firstname":{
             "type":"text",
             "analyzer": "ik_smart"
           },
           "lastname":{
             "type":"text",
             "analyzer": "ik_smart"
           }
         }
       }
     }
   }
 }
}

#2.查找索引库
GET /employee

#3.新增索引库字段mapping (不可修改mapping)
PUT /employee/_doc/_mapping
{
 "properties":{
   "gender":{
     "type":"keyword"
   }
 }
}

#4.删库跑路
DELETE /employee

#文档操作
#1.新增单个文档
PUT /employee/_doc/1
{
 "age": 21,
   "weight": 52.1,
   "isMarried": false,
   "info": "我真滴棒棒哒",
   "email": "cabcs@163.cn",
   "score": [99.1, 99.5, 98.9],
   "name": {
       "firstName": "肥",
       "lastName": "小"
   }
}

#2.查询单个文档
GET /employee/_doc/1

#3.查询所有文档
GET /employee/_doc/_search

#4.更新分为全量更新和增量修改
#4.1全量修改 没有id就是新增 有id底层就是先删除原有的 在新增修改后的数据
PUT /employee/_doc/1
{
 "age": 22,
   "weight": 52.1,
   "isMarried": false,
   "info": "我真滴棒棒哒",
   "email": "cabcs@163.cn",
   "score": [99.1, 99.5, 98.9],
   "name": {
       "firstName": "肥",
       "lastName": "小"
   }
}

#4.2增量修改,只修改单个数据
POST /employee/_doc/1/_update
{
 "doc":{
   "age":25
 }
}

#5删除文档
DELETE /employee/_doc/1

#6.高级查询
#查询所有满足条件的文档
#query:条件
#bool 组合查询
#must 匹配搜索条件 类似and
#match 分词匹配查询
#filter 过滤条件
#range 过滤区间
#trem  匹配字段
#from:第几条数据开始
#size:需要查询出来的几条数据
#_sources:指定查询的字段
#sort:排序
GET /employee/_doc/_search
{
 "query": {
   "bool": {
     "must": [
       {
       "match": {
         "info":"java"
        }
       }
     ],
   "filter": [
     {
       "term": {
         "isMarried":false
       }
     },
     {
       "range": {
         "age": {
           "gte": 20,
           "lte": 60
           }
         }
       }
     ]
   }
 },
 "from": 0,
 "size": 2,
 "sort": [
   {
     "age": "desc"
   }
 ]
}

#7.高阶用法
#复杂查询
GET /employee/_doc/_search
{
 "query": {
   "bool": {
     "must": [
       {
         "match": {
           "info": "java"
         }
       },{
         "match":{
           "name.lastName":"张"
         }
       }
     ],
     "filter": [
       {
         "term": {
           "isMarried": false
         }
       },
       {
         "range": {
           "age": {
             "gte": 20,
             "lte": 60
           }
         }
       }
     ]
   }
 },
 "from": 0,
 "size": 2,
 "sort": [
   {
     "age": "desc"
   }
 ]
}

相关文章
|
前端开发 API
ES 高级实战(四)查询 ES 数据
ES 高级实战(四)查询 ES 数据
1380 0
ES 高级实战(四)查询 ES 数据
|
3月前
|
数据采集 运维 DataWorks
DataWorks产品使用合集之如何从es同步数据到es
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
存储 弹性计算 Linux
Kibana+云上ES访问SLS的操作文档
本文介绍了如何用Kibana+云上ES访问SLS的方案
420 2
Kibana+云上ES访问SLS的操作文档
|
6月前
|
JSON 前端开发 JavaScript
ES6(2015)-ES13(2022)新增特性大总结
ES6(2015)-ES13(2022)新增特性大总结
94 0
|
Docker 容器
es应用笔记1-es部署
es应用笔记1-es部署
114 0
|
存储 JavaScript 前端开发
ES6快速入门
ES6快速入门
85 0
|
存储 缓存 自然语言处理
ES 优化概述|学习笔记
快速学习 ES 优化概述。
230 0
|
监控 数据可视化 Java
ES 插件概述|学习笔记
快速学习 ES 插件概述。
568 0
ES 插件概述|学习笔记
|
JSON Linux API
ES 批量操作-bulk|学习笔记
快速学习 ES 批量操作-bulk。
409 0
ES 批量操作-bulk|学习笔记
|
存储 缓存 自然语言处理
ES 优化概述 | 学习笔记
快速学习 ES 优化概述