记录下刚接触 Kibana 用到的几条 DSL (domain specific language)
ES中
- 表叫索引(index)
- 每个表的schema叫mapping,包含哪些字段、类型、是否可以搜索这个字段等
- 一行记录叫document
例子中的表my_index有id、activityId,name, styleId等字段
# 查询数据库中所有的表
GET _cat/indices
# 查询表的mapping
GET my_index/_mapping
# 查表中document的个数
GET my_index/_count
# 查表中的所有document,含offset和limit
GET my_index/_search
{
"from": 0,
"size": 100,
"query": {
"match_all":{}
}
}
# 精确查询
GET my_index/_search
{
"query": {
"term": {
"activityId": 12345
}
}
}
# 精确查询terms
GET my_index/_search
{
"query": {
"terms": {
"activity_id":
[12345,67890]
}
}
}
# 模糊查询
GET my_index/_search
{
"query":{
"match":{
"name":"默认"
}
}
}
# 聚合查询,把activityId=12345的id值求和,只为演示,没有实际含义
GET my_index/_search
{
"query":{
"bool":{
"filter":{
"term":{
"activityId": 12345
}
}
}
},
"aggs":{
"total_count":{
"sum":{
"field":"id"
}
}
}
}
# 修改mapping,增加一个字段
PUT /my_index/_mapping
{
"properties":{
"modify_time" : {"type": "date"}
}
}
# 修改docid=312的一个字段
POST /my_index/_update/314
{
"doc":{
"modify_time" :"2021-09-30"
}
}
# 查询特定docid的记录
GET /my_index/_doc/31
# 有范围的聚合查询,按styleId做group by 然后把每个group中的id求和
GET /my_index/_search
{
"query":{
"bool" :{
"filter":[
{
"term":{
"activityId": 12345
}
},
{
"range":{
"modify_time":{
"format":"yyyy-MM-dd",
"gt" :"2021-09-28",
"lte":"2021-09-30"
}
}
}
]
}
},
"aggs": {
"certain_doc" :{
"terms" :{
"field" : "styleId",
"order" :{
"id_sum" : "desc"
}
},
"aggs" :{
"id_sum" : {
"sum" :{
"field" : "id"
}
}
}
}
}
}
# 模糊查询按照相关性排序
GET /my_index/_search
{
"query" :{
"match" :{
"name" :"默认"
}
},
"sort":{
"_score" :{
"order" :"desc"
}
}
}



