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


分词器
English 分词器(内置)
- 按空格和标点符号分词
- 支持词干提取(如将 "running" 转为 "run")
- 支持停用词过滤(如去除 "the"、"is" 等常见词)
- 支持大小写转换(通常将单词转为小写)
IK 分词器(需手动安装)
作用:a. 创建倒排索引时对文档进行分词
b. 用户搜索时,对输入的内容进行分词
模式:
a. ik_smart: 粗粒度,即判断为是一个词后不再细分
b. ik_max_word:细粒度, 即使判断是一个词后仍继续判断;优点是搜索到的概率更大,但内存占用会较大;
ES与MySQL的对比
- mysql擅长事务类型操作,可以确保数据的安全性以及一致性(ACID)
- es擅长海量数据的搜索、分析、计算
- 在实际开发过程中,一般使用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

浙公网安备 33010602011771号