【ES三周年】+es快速入门&基础概念讲解
2023-02-18 16:29:08 时间
基础知识
基本认知
索引(index):
类似于传统关系数据库中的一个数据库; 复数词为 indices 或 indexes
类型(type):
类似于传统关系数据库中的一个表
文档(docuemnt):
类似于传统关系数据库中的表中的一行数据
倒排索引:
关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。Elasticsearch 和 Lucene 使用了一个叫做 倒排索引 的结构来达到相同的目的。默认的,一个文档中的每一个属性都是 被索引 的(有一个倒排索引)和可搜索的。一个没有倒排索引的属性是不能被搜索到的
Elasticsearch 开放的restful api接口通信,所以理论任何语言都可以接入
分析和过滤器认知
字符过滤器
首先,字符串按顺序通过每个 字符过滤器 。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 and
。
分词器(分析器)
其次,字符串被 分词器 分为单个的词条或词语。一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条。
Token 过滤器
最后,词条按顺序通过每个 token 过滤器 。这个过程可能会改变词条(例如,小写化 Quick ),删除词条(例如, 像 a,
and,
the 等无用词),或者增加词条(例如,像 jump 和 leap 这种同义词)。
Elasticsearch提供了开箱即用的字符过滤器、分词器和token过滤器
Curl请求
curl -i -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
- -i: 打印返回的头部信息
- VERB: HTTP方法 :
GET
、POST
、PUT
、HEAD 或者
DELETE` - -d: 请求提内容<BODY>
学习笔记
创建索引
创建megacorp索引,分配3封主分配,每个主分片分配1个副本,这里总的是6个分片(3主3副), 后面章节我们会简单介绍es集群知识
PUT /megacorp
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
直接提供id方式索引一个文档
# PUT 索引/类型/id
PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
PUT /megacorp/employee/2
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}
PUT /megacorp/employee/3
{
"first_name" : "Douglas",
"last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}
基本的查询
# GET 索引/类型/id
GET /megacorp/employee/1
# GET 索引/类型/_search
GET /megacorp/employee/_search
# 增加搜索参数q
GET /megacorp/employee/_search?q=last_name:Smith
# _all表示所有索引里查询
# 查询在 tweet 类型中 tweet 字段包含 elasticsearch 单词的所有文档
GET /_all/employee/_search?q=tweet:elasticsearch
# name 字段中包含 john 并且在 tweet 字段中包含 mary 的文档
GET /_all/employee/_search?q=+name:john +tweet:mary
# /_search?q=%2Bname%3Ajohn+%2Btweet%3Amary
# (name 字段中包含 mary 或者 john )(date 值大于 2014-09-10) (_all_ 字段包含 aggregations 或者 geo)
GET /_all/employee/_search?q=+name:(mary john) +date:>2014-09-10 +(aggregations geo)
# 搜索返回包含 mary 的所有文档
GET /_search?q=mary
# 查询表达式查询(查询体)
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"about" : "rock albums"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
### 查询索引下的类型所有和细节
GET /megacorp/_mapping?pretty=true
基本的删除操作
# 删除文档
DELETE /megacorp/employee/1
# 删除索引
DELETE /megacorp
相关文章
- 个人笔记(路由、网络相关)
- 个人笔记(vue篇)
- 怎么去水印不伤原图?这个去水印方法值得收藏!
- 羊了个羊,通关秘籍!
- 实用 | 盘点抓包修改响应结果的 2 种方式!
- 小技巧 | Chrome 插件如何完成剪切板的操作!
- DDOS攻击讲堂
- 思科交换机简单配置
- 实战 | 如何利用 Scrapy 编写一个完整的爬虫!
- 超简单就可做一款三功能的LED车灯
- 实战 | 教你快速爬取热门股票,辅助量化交易!
- 行业趋势|光伏行业SCM供应链数字化管理优势、价值
- 破除上下游梗阻,如何为能源化工行业开出“新良方”?
- 软件分享 | 第一期 Markdown神器Typora安装和破解教程
- jira-dev-tool插件安装失败的解决方法
- 软件分享 | 第二期 截图神器snipaste安装和使用教程
- 基于Hexo搭建静态博客
- 软件分享 | 第三期 搜索神器listary安装和使用
- 发送HTML模板邮件
- 使用3-hexo主题时无法正常渲染html代码