初识es

by shihang.mai

基本概念

索引、类型、文档 可以直接类比 mysql的库、表、记录

倒排索引

如果我们有一张电影表,有1000K数据

create table `tb_view`(
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(10)  NOT NULL COMMENT '电影名' 
)

如果我们用sql查询比卡超

select * from tb_view where name like '%比卡超%'

那么会每一条去匹配,从而找出所有比卡超相关的记录,非常的慢

如果是使用倒排索引,会将所有电影名分词,然后维护一张倒排索引表,一共两列

名词 文档序号
比卡超 1,2,3,5
大大 3

那么查询比卡超,只需要直接查询1,2,5的文档即可。例如搜索【比卡超大大】,那么文档3同时命中,而二档1,2,5只命中一个,那么会出现不同的相关度,即score

命令

ES都是用restful风格操作的

命令 作用 举例
/_cat 查看ES状态 _cat/nodes 查看es的节点
_cat/health 查看es的健康状态
_cat/master 查看es主节点信息
_cat/indices 查看es中的所有索引
put 增加or覆盖文档 put 索引名/类型/唯一标识 json内容唯一标识必填
当es中存在该标识做覆盖操作(每一次操作,版本和序列号都会+1),
如不存在,做插入操作
post 增加or覆盖文档 post 索引名/类型/(唯一标识) json内容 唯一标识非必填
如不写,则es会默认分配一个唯一标识并且每次不一样。
如写,那么es中存在该标识做覆盖操作(每一次操作,版本和序列号都会+1),如没,做插入操作
get 获取文档 get 索引名/类型/唯一标识 其中_seq_no每更新一次就会加1
post _update 更新文档 post 索引名/类型/唯一标识/_update
{
doc:json内容
}
存在的key做覆盖,不存在key做增加
delete 删除文档or删除索引 delete 索引名/类型/唯一标识
delete 索引名
POST _bulk 批量 POST /_bulk
{"delete":{"_index":"testindex","_type":"testtype","_id":"1"}}
{"create":{"_index":"testindex","_type":"testtype","_id":"1"}}
{"m":"mai"}
{"index":{"_index":"testindex","_type":"testtype"}}
{"m":"msh"}
{"update":{"_index":"testindex","_type":"testtype","_id":"1"}}
{"doc":{"m":"maishihang"}}
query 查询文档 GET 索引名/_search {"query":{}},常用match、bool、filter、term
aggs 对查询结果进行组合 GET 索引名/_search {"aggs":{}}
mapping 获取索引属性类型 GET 索引名/_mapping
PUT 索引 {"mapping":{}}创建映射
PUT 索引/_mapping {}增加映射
并不存在修改映射
_reindex 迁移数据(修改映射的方法) POST _reindex {}
_analyze 分词 POST _analyze {"analyzer":"分词器","text":"值"}
下载分词器到plugins目录即可,并且里面的config可以配置自定义词库

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html

你可能感兴趣的:(初识es)