ElasticSearch简说 (算是白话)有问题欢迎评论
作者:互联网
ElasticSearch 是一个用java开发并且是当前最流行的开源搜索引擎 以下简称es
es特点就是可以实现实时搜索,稳定,可靠,快速,安装使用方便 客户端支持多种语言 创始人 Shay Banon(谢八农)
百度,淘宝,京东等它们搜索使用的都是es 比如我爱阿民 搜索关键字使用我 跟 阿民想把我爱阿民这句话搜索出来显然使用mysql的like模糊查询是做不到的 用es就可以做到了 es其实是一个非关系型数据库 它也有客户端服务端(mysql也是有的) es底层使用的Lucene(是一个搜索引擎框架不过它有缺点 不能做集群只能做单机 只能在java项目中使用 使用起来代码写的多等) es解决了Lucene那些缺点 es是可以独自部署在服务器上的跟mysql一样
es有几个概念 index(索引库)type(类型) Document(文档) field(字段)
索引index
就是把文档中想似的数据集中保存在索引库 当查询数据时就查找索引库 索引库中会保存文档(也就是数据)
的id然后根据这个id去查找数据
映射 mapping
后续解释
字段field
相当于数据表的字段|列
字段类型type
每个字段都有类型 比如text、keyword、byte等
文档document
用来保存基础的数据 相当于mysql表中一行一行的数据
集群cluster
就是将多个节点连接起来 让它们持有共同的数据
节点node
一个节点就是集群中的一个服务器
es分词倒排索引
hello world
hello elastic
what is elastic
上面表示三行数据分词倒排索引就是 首先把上面的三行数据进行分词 比如按着空格进行分割 分割完就是 hello、world、hello、elastic、what、is、elastic 这几个单词 这几个单词会给它们存储这个单词在哪一行(也就是哪一行的id)然后做去重 比如hello有重复的 它就会把hello保存成 hello 对应哪些行的id 看上面三行数据 hello它对应第一行跟第二行假设第一行id为1第二行id为2 也就会保存成 hello—1,2如果后面又加了一行有hello的数据假设这个数据的id为4就会保存成hello —1,2,3(这里的—表示对应关系 保存数据库肯定hello对应一个字段 1,2,3对应一个字段)然后排序比如根据首字母排序(是根据分完词的单词的首字母排序) es这种数据库对于要查询的数据不会无限增长因为常用的单词就那几个 而mysql没有这个概念添加一行数据就增长一行 是无限增长的 而es虽然上面的三条数据可能会变成四条但是它只查询它的索引库根据索引库查出来的id在去找原本的数据 hello对应的数据会变多但是无所谓 而倒排索引就是根据内容(也就是hello)去找id这个操作就叫倒排索引
一点语法
分词器设置 一般使用ik分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases ik分词器下载地址
_analyze是我自己创建的索引名字
post _analyze{"analyzer":"这里就写你要用的分词器默认standard"}
POST _analyze{"analyzer":"ik_max_word",}#ik_max_word:会将文本做最细粒度的拆分
POST _analyze{"analyzer":"ik_smart",}#ik_smart:会做最粗粒度的拆分
ES基本操作
创建索引
PUT /索引名字 比如 PUT /es_db
查询索引
GET /索引名字 比如 GET /es_db
删除索引
DELETE /索引名字 比如 DELETE /es_db
添加文档跟修改文档
PUT /索引名字/类型/id 其中类型在es7.x版本同一写成_doc PUT /es_db/_doc/1{“name”:“am”}
POST /索引名字/类型/id 其中类型在es7.x版本同一写成_doc id如果不写es会自动给我们创建一个唯一值当id POST /es_db/_doc/1{"name":"am"}
如果PUT或POST的id存在了那么它会变成修改
查找文档
GET /索引名字/类型/id 类型可以不写 比如 GET /es_db/1
删除文档
DELETE /索引名字/类型/id 类型可以不写 比如 DELETE /es_db/1
查找操作
GET /索引名字/类型/_search 比如GET /es_db/_search 表示查找当前类型中所有文档
条件查询
GET /索引名字/类型/_search?q=:** 比如 GET /es_db/_search?q=name:am
范围查询
GET /索引名字/类型/_search?q=***[25 TO 26] 比如 GET /es_db/_search?q=age[25 TO 26] 表示查询age等于25或者等着26的数据
根据多个id进行批量查询
GET /索引名字/类型/_mget 比如 GET /es_db/_mget{“ids”:[“1”,“2”]}
查询年龄大于小于 小于等于 大于等于
GET /索引名字/类型/_search?q=age:<=** 比如 GET /es_db/_search?q=age:<=28
GET /索引名字/类型/_search?q=age:<** 比如 GET /es_db/_search?q=age:<28
GET /索引名字/类型/_search?q=age:>=** 比如 GET /es_db/_search?q=age:>=28
GET /索引名字/类型/_search?q=age:>** 比如 GET /es_db/_search?q=age:>28
查询结果只输出某些字段
GET /索引名字/类型/_search?_source=name,age 比如 GET /es_db/_search?_source=name,age
查询结果排序
GET /索引名字/类型/_search?sort=age:desc 比如 GET /es_db/_search?sort=age:desc
es保存数据图
标签:search,GET,白话,db,索引,ElasticSearch,简说,id,es 来源: https://blog.csdn.net/qq_36301061/article/details/117298770