kibana-查询ES 的一些语法
# 前言
# 不断增补ing
# 版本 7.8.0
# 替换的关键字使用中文说明,根据需求自行替换
# 正文
# 基础知识
# 命令
-7.x中的type已经过时,默认设置为_doc
命令 | url | 解释 |
---|---|---|
put | /索引名称/类型名称/文档ID | 创建文档(指定文档ID) |
POST | /索引名称/索引类型 | 创建文档(随机文档ID) |
POST | /索引名称/类型名称/文档id/_update | 修改文档 |
POST | /索引名称/类型名称/_search | 查询数据 |
DELETE | /索引名称/类型名称/文档id | 删除文档/或者索引 |
GET | /索引名称/类型名称/文档id | 查询文档通过文档ID |
# 字段类型
类型 | 对应类型 | 说明 |
---|---|---|
字符串 | text keyword | text自动分词,keyword全文匹配 |
整型 | byte short integer long | |
浮点型 | float double half_float scaled_float | |
日期 | date | |
布尔 | boolean | |
二进制 | binary | |
范围 | range | |
数组 | array | |
对象 | object | |
嵌套 | nested | |
ip | ip (IPv4 和 IPv6 地址) |
# 创建
PUT 索引名
1
# 创建携带mappings和settings的索引
PUT 索引名
{
"settings": {
"analysis": {
"analyzer": {
"default": {
# 我使用了ik分词,也可以使用其他分词器
"type": "ik_max_word"
},
# 自定义分词器
"splitByComma": {
"type": "pattern",
# 分词规则
"pattern": ","
}
}
}
},
"mappings": {
"properties":{
"字段名":{
# 也可以设置为keyword
"type":"text",
# 如果只需要一种,就不需要添加下面的
"fields":{
"type":"keyword"
},
# 如果并不需要另外分词器,则不加这句。会使用setting中的默认分词器。
"analyzer": "splitByComma"
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 测试分词器
GET 索引名/_analyze
{
# 填要使用的索引名称
"analyzer":"ik_max_word",
# 输入要分词的文本
"text": "文本"
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 添加数据
POST 索引名/_doc
{
你要添加的内容
}
1
2
3
4
2
3
4
# 删除索引
DELETE 索引名
1
# 查全部 match_all
GET 索引名/_search?pretty
{
"query": {
"match_all": {}
}
}
1
2
3
4
5
6
2
3
4
5
6
# 单条件模糊查询 match
GET 索引名/_search?pretty
{
"query": {
"match": {
"字段": "条件内容"
}
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 精确查询 term
GET 索引名/_search?pretty
{
"query": {
"term": {
"字段": "条件内容"
}
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 单条件模糊查询 match
- 指定查询条数,类似于sql的分页 from size
GET 索引名/_search?pretty
{
"from": 0,
"size": 2,
"query": {
"match": {
"字段": "条件内容"
}
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 单条件模糊查询 match
- 限制返回的字段 _source
GET 索引名/_search?pretty
{
"from": 0,
"size": 2,
"_source": ["字段"],
"query": {
"match": {
"字段": "条件内容"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 多条件模糊查询 multi_match
GET 索引名/_search?pretty
{
"from": 0,
"size": 2,
"query": {
"multi_match": {
"fields":["字段1","字段2"],
"query": "条件内容"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# filter过滤
- gte 大于等于
- lte 小于等于
- e 等于
- bool
- must 必须
- should 或者
- must_not 不等于
GET 索引名/_search?pretty
{
"query": {
"bool": {
"filter": {
"range": {
"过滤的字段": {
"gte": 10,
"lte": 200
}
}
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 聚合查询 aggs
GET 索引名/_search?pretty
{
"size": 0,
"query": {
"match_all": {
}
},
"aggs": {
"聚合后返回的关键字": {
"terms": {
"field": "聚合字段.keyword"
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查询所有命中文档数
7.x默认只会命中10000条,如果需要跟数据库一样查询count(*)
GET qh_journal/_search
{
"query":
{
"match_all":
{
}
},
"track_total_hits":true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
编辑 (opens new window)
上次更新: 2024-11-06, 19:27:10