前言
Elasticsearch 作为一个文档型数据库,和mysql等关系型数据库一样,同样有相关的查询语法和常用的查询语句
1.查询所有数据
GET /索引名/_search
{
"query": {
"match_all": {}
}
}
2.根据关键字查询
GET /索引名/_search
{
"query":{
"bool":{
"must": [
{"term":
{"ruleTraceId":145020602594435072}
}
]
}
}
}
其中 ruleTraceId 的字段类型为keyWord。
3.创建索引
PUT 索引名称/
{
"settings":{
"number_of_shards":3,
"number_of_replicas":0
},
"mappings": {
"doc":{
"properties":{
"ruleTraceId":{
"type":"keyword"
},
"message":{
"type":"text"
},
"invokeId":{
"type":"keyword"
},
"marker":{
"type": "keyword"
},
"line_number":{
"type":"integer"
},
"class":{
"type":"keyword"
},
"method":{
"type":"keyword"
},
"exception":{
"type":"nested",
"properties":{
"exception_message":{
"type":"text"
},
"exception_class":{
"type":"text"
},
"stacktrace":{
"type":"text"
}
}
},
"timestamp":{
"type": "date",
"format":"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
},
"version":{
"type":"keyword"
},
"level":{
"type":"keyword"
}
}
}
}
}
其中number_of_shards 代表索引分片数,number_of_replicas 代表副本个数(注:如果只有一个节点,则副本数为0)。
4. 按照时间区间查询并排序
get /qlanglog/_search
{
"query":{
"bool":{
"must": [
{"match":
{"ruleTraceId":147543126306791424}
},
{
"range": {
"timestamp": {
"gte": "20/10/2021",
"lte": "2022",
"format": "dd/MM/yyyy||yyyy"
}
}
}
]
}
},
"sort":[{
"timestamp":"asc"
},
"_id":"asc"
]
}