elasticsearch kibana 基本查询用法示例。
索引操作
查询全部索引:
GET /_cat/indices //如果需要显示表头字段,则使用:GET /_cat/indices?v
展示结果如下:
yellow open products_v2 ghW46n9uS4OqQpF07aUDTw 5 5 4082042 588348 3.2gb 3.2gb 3.2gb //返回结果说明 health status index uuid pri rep docs.count docs.deleted store.size pri.store.size 健康状态 索引状态 索引 id 主分片 副本分片 文档数 删除 存储大小 主分片存储大小
查看某个索引的结构(映射 mapping):
GET /products/_mapping
文档操作
查询文档
GET /products/_doc/1(1为文档id)
高级查询 Query DSL
term(关键词查询)
注意:此处需要主要注意分词 因为ES存储的过程是将一段信息按照指定的分词规则进行存储,例如使用的是ik分词器,存储的信息为:“我们吃饭” ,ik分词器会将该信息分割为两个关键字 “我们” “吃饭” 进行存储,那么想根据该字段搜索文档时,需要传入的是"我们" 或者"吃饭",如果传入"我" 或者 “们” 都是搜索不到该信息的。
注:如果没有指定分词器 ES默认使用的中文按字分词,也就是会将 “我们吃饭” 分割为 我、们、吃、饭 进行存储。
注意:ES的字符串类型分别为 keyword text ,keyword是不会进行分词存储的,也就是只有字段类型是text的时候,才会出现上述情况。keyword必须用全部信息进行检索。
GET /products/_search
{
"query": {
"term": {
"product_id": {
"value": "6389580"
}
}
}
}
range(范围查询)
// 参数说明 gt(大于) gte(大于等于) lt(小于) lte(小于等于)
GET /student/_search
{
"query": {
"range":{
"age":{
"gt":"19"
}
}
}
}
prefix(前缀查询)
//该行为与分词无关
GET /student/_search
{
"query": {
"prefix": {
"name": {
"value": "小"
}
}
}
}
wildcard(通配符)
// 参数说明 ?(匹配一个) *(匹配多个)
GET /student/_search
{
"query":{
"wildcard": {
"name": {
"value": "小?"
}
}
}
}
ids(多id查询)
GET /student/_search
{
"query": {
"ids": {
"values": ["1","2"]
}
}
}
bool(多条件查询)
//bool关键字 用来组合多个条件实现复杂查询
//must:相当于&&
//should:相当于||
//must_not:相当于!不能满足任何一个
GET /student/_search
{
"query": {
"bool": {
"must": [
{
"ids":{
"values":[1,2,3,4]
}
},{
"term":{
"desc":{
"value": "小"
}
}
}
]
}
}
}
multi_match(多字段查询)
//字段分词则按分词检索。
GET /student/_search
{
"query": {
"multi_match": {
"query": "小",
"fields": ["desc","name"]
}
}
}
size(返回指定条数)
// 默认10条
GET /student/_doc/_search/
{
"query":{
"match_all":{}
},
"size":5
}
form(分页)
//返回指定起始返回位置,和size实现分页
GET /student/_doc/_search/
{
"query":{
"match_all":{}
},
"size":5,
"from":0
}
sort(指定字段排序)
// 参数说明 desc 降序 asc 升序
GET /student/_search
{
"query":{
"match_all":{}
},
"sort":[
{
"age":{
"order":"asc"
}
}
]
}
source(只查询指定字段)
GET /student/_doc/_search/
{
"query":{
"match_all":{}
},
"_source":["id","desc"]
}