微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

Kibana简单操作ES

elasticsearch aide_941 32℃
GET _search?timeout=10ms
{
  "query": {
    "match_all": {}
  }
}

GET _nodes
GET _cat/health?v
GET /_cat/indices?v
GET /_cat/indices?v&h=health,status,index

#索引操作
GET /baizhi
GET /baizhi/_search
PUT /baizhi
DELETE /baizhi


# 创建index(baizhi)后,在指定index中添加类型user
PUT /baizhi 
POST /baizhi/user 
{
  "user": { 
      "properties": { 
        "id":    { "type": "text"  }, 
        "name":     { "type": "text"  }, 
        "age":      { "type": "integer" },  
        "created":  {
          "type":   "date", 
          "format": "strict_date_optional_time||epoch_millis"
        }
      }
    }
}

#或者
# 注意: 字符串常用类型:text类型会分词 keyword类型不会分词
POST /baizhi/student 
{
  "mappings": {
    "student": { 
      "properties": { 
        "title":    { "type": "text"  },  
        "name":     { "type": "text"  }, 
        "age":      { "type": "integer" },  
        "created":  {
          "type":   "date", 
          "format": "strict_date_optional_time||epoch_millis"
        }
      }
    }
  }
}

GET /baizhi/_mapping/
GET /baizhi/_mapping/student
GET /baizhi/_mapping/user


PUT /ecommerce/product/1
{
    "name" : "gaolujie yagao",
    "desc" :  "gaoxiao meibai",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" ]
}
PUT /ecommerce/product/2
{
    "name" : "jiajieshi yagao",
    "desc" :  "youxiao fangzhu",
    "price" :  25,
    "producer" :      "jiajieshi producer",
    "tags": [ "fangzhu" ]
}
PUT /ecommerce/product/3
{
    "name" : "张朝阳,李玮峰",
    "desc" :  "caoyang weifeng",
    "price" :  40,
    "producer" :      "company producer",
    "tags": [ "足球" ]
}
PUT /ecommerce/product/4
{
    "name" : "张朝阳,马云,马化腾",
    "desc" :  "gaoxiao mayun",
    "price" :  30,
    "producer" :      "yagao producer",
    "tags": [ "企业", "CEO" ]
}
PUT /ecommerce/product/5
{
    "name" : "马云,马化腾,yagao",
    "desc" :  "loser yagao",
    "price" :  25,
    "producer" :      "YAGAO producer",
    "tags": [ "企业" ]
}
PUT /ecommerce/product/6
{
    "name" : "郭富城,周伯通",
    "desc" :  "caoben zhiwu",
    "price" :  40,
    "producer" :      "contain producer",
    "tags": [ "搞笑" ]
}

#全量更新
PUT /ecommerce/product/1
{
    "name" : "gaolujie yagao",
    "desc" :  "gaoxiao meibai qinxin",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" , "qinxin"]
}

#局部更新
POST /ecommerce/product/1/_update
{
  "doc": {
    "name": "jiaqiangban gaolujie yagao"
  }
}

GET /ecommerce/
GET /ecommerce/product/1
GET /ecommerce/product/1?version=3

DELETE /ecommerce/product/1
#删除一个document之后,我们可以从侧面证明,它不是立即物理删除的,因为它的一些版本号等信息还是保留的

#1.query string search
#因为search参数都是以http请求的query string来附带的
#搜索全部商品
GET /ecommerce/product/_search
#搜索商品名称中包含yagao的商品,而且按照售价降序排序:
GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
#对比一下:

#2.query DSL
#搜索全部商品
GET /ecommerce/product/_search
{
  "query": { "match_all": {} }
}
#查询名称包含yagao的商品,同时按照价格降序排序
GET /ecommerce/product/_search
{
  "query" : {
    "match" : {
        "name" : "yagao"
      }
    },
    "sort": [
        { "price": "desc" }
    ]
}


#3.分页查询
#总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品

GET /ecommerce/product/_search
{
  "query": { "match_all": {} },
  "from": 1,
  "size": 1
}

#4.查询指定项
#指定要查询出来商品的名称和价格
GET /ecommerce/product/_search
{
  "query": { "match_all": {} },
  "_source": ["name", "price"]
}


#5.过滤查询
#搜索商品名称包含yagao,而且售价大于25元的商品
GET /ecommerce/product/_search
{
   "query" : {
       "bool" : {
            "must" : {
               "match" : {
                   "name" : "yagao"
               }
             },
            "filter" : {
                "range" : {
                    "price" : { "gt" : 25 }
                }
            }
        }
    }
}

#6.full-text search(全文检索)
GET /ecommerce/product/_search
{
    "query" : {
        "match" : {
            "producer" : "yagao producer"
        }
    }
}

#7.phrase search(短语搜索)
#跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配(不区分大小写), 才能作为结果返回

GET /ecommerce/product/_search
{
    "query" : {
       "match_phrase" : {
            "producer" : "yagao producer"
        }
    }
}

#8.多条件查询
#名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元
#must表示一定要满足;
#should表示可以满足也可以不满足;
#must_not表示不能满足该条件;
#"minimum_should_match": 1,表示最小匹配度,可以设置为百分百,详情看源文档Elasticsearch Reference [6.4] » Query DSL » Minimum Should Match,设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值(意思是当这个值等于X或者等于Y的时候都成立,务必注意格式)


GET /ecommerce/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "yagao"
          }
        }
      ],
      "should": [
        {
          "match": {
            "desc": "fangzhu"
          }
        },
        {
          "match": {
            "desc": "caoben"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "price": 25
          }
        }
      ],
     "minimum_should_match": 1
    }
  }
}

#9.批处理操作
GET /baizhi/_search
#除了能够索引、更新和删除单个文档外,Elasticsearch还提供了使用_bulk API批量执行上述任何操作的能力。这个功能非常重要,因为它提供了一种非常有效的机制,可以以尽可能少的网络往返尽可能快地执行多个操作
# 批量插入多个document
#先分配分配索引再插入 
POST /baizhi/student/_bulk 
{"index":{}}
{"name":"ww","title":"王五","age":18,"created":"2018-12-27"}
{"index":{}}
{"name":"zl","title":"赵六","age":25,"created":"2018-12-27"}


# 批量操作(包含修改和删除)
POST /baizhi/student/_bulk	
{"update":{"_id":"AWqXPeQxeOcZARgNd0Pm"} }  
{"doc":{"title":"王小五2"}}
#{"delete":{"_id":"AWqXPeQxeOcZARgNd0Pm"}} 

#10.高级搜索
# 批量插入测试数据
POST /zpark/user/_bulk
{"index":{"_id":1}}
{"name":"zs","realname":"张三","age":18,"birthday":"2018-12-27","salary":1000.0,"address":"北京市昌平区沙阳路55号"}
{"index":{"_id":2}}
{"name":"ls","realname":"李四","age":20,"birthday":"2017-10-20","salary":5000.0,"address":"北京市朝阳区三里屯街道21号"}
{"index":{"_id":3}}
{"name":"ww","realname":"王五","age":25,"birthday":"2016-03-15","salary":4300.0,"address":"北京市海淀区中关村大街新中关商城2楼511室"}
{"index":{"_id":4}}
{"name":"zl","realname":"赵六","age":20,"birthday":"2003-04-19","salary":12300.0,"address":"北京市海淀区中关村软件园9号楼211室"}
{"index":{"_id":5}}
{"name":"tq","realname":"田七","age":35,"birthday":"2001-08-11","salary":1403.0,"address":"北京市海淀区西二旗地铁辉煌国际大厦负一楼"}

# 查询所有
# 按年龄倒序排列
GET /zpark/user/_search?q=*&sort=age:desc&pretty
GET /zpark/user/_search
{
  "query":{
    "match_all":{}	
  },
  "sort":{
      "age":"desc"  
    }
}

#11.查询address在海淀区的所有用户,并高亮
# 注意: match查询会分词 如:海淀区 会分词为 海 | 淀 | 区
# 需要高亮的字段列表
GET /zpark/user/_search
{
  "query": {
    "match": {  
      "address":"海淀区"
    }
  },
  "highlight": {
    "fields": {		
      "address": {}   
    }
  }
}

#12.
# 大于等于  大于用 gt
# 小于等于  小于用 lt
GET /zpark/user/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 20,   
        "lte": 30    
      }
    }
  }
}

#13.查询名字已s结尾的用户
#? 匹配一个字符
#* 匹配0~n个字符
GET /zpark/user/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "*s"
      }
    }
  }
}

#14.查询id为1,2,3的用户
GET /zpark/user/_search
{
  "query": {
    "ids": {
      "values": [1,2,3]
    }
  }
}

 

es bulk 批量操作

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014017121/article/details/68485163
  1. es bulk 批量 更新
  2. 使用bulk命令时,REST API以_bulk结尾,批量操作写在json文件中,官网给出的语法格式:
  3. action_and_meta_data\n
  4. optional_source\n
  5. action_and_meta_data\n
  6. optional_source\n
  7. ….
  8. action_and_meta_data\n
  9. optional_source\n
  10. 命令操作类型占一行 数据另起一行
  11. 如 create 格式 案例
  12. {“index”:{“_id”:“17”}} // 需要插入的数据类型 action
  13. {“name”:“cddd”,“id”:17} // 带插入的action 对应的数据内容
  14. 批量插入
  15. 方法1
  16. curl -XPOST ‘http://localhost:9200/test/addata_index/_bulk’ -d
  17. {“index”:{“_id”:”17″}}
  18. {“name”:”cddd”,”id”:17}
  19. {“index”:{“_id”:”18″}}
  20. {“name”:”cddd”,”id”:18}
  21. {“index”:{“_id”:”19″}}
  22. {“name”:”cddd”,”id”:19}
  23. {“index”:{“_id”:”20″}}
  24. {“name”:”cddd”,”id”:20}
  25. 方法 2 新建文件 tt.json
  26. tt.json 内容
  27. {“index”:{“_id”:“27”}}
  28. {“name”:“cddd”,“id”:27}
  29. {“index”:{“_id”:“28”}}
  30. {“name”:“cddd”,“id”:28}
  31. { “delete”:{“_id” : 1 }}
  32. (注意这里空行)
  33. curl -XPOST ‘http://localhost:9200/test/addata_index/_bulk’ –data-binary @tt.json
  34. 注意 点 : 如果自己写的json 文件 不要 在每行后 添加 /n 换行符 直接回车就OK
  35. bulk 好处就是可以 在一个文件里面执行 create update delete 等操作
  36. 删除 操作
  37. 新建 del.json 文件
  38. 文件内容
  39. { “delete”:{“_id” : 26 }}
  40. { “delete”:{“_id” : 25}}
  41. // 注意这里是空行 要不然只会删除 编号 位 26 的这行数据
  42. 更新操作
  43. 新建文件 up.json
  44. {“index”:{“_id”:“21”}}
  45. {“name”:“最后一次更新数据”}
  46. {“index”:{“_id”:“18”}}
  47. {“name”:“美好的年龄”}
  48. // 。。。。
  49. 注意点 : 如果 是中文 ,请更改文件编码格式为 UTF-8
GET /_search

GET /_cat/indices?v

GET /filebeat-2019.05.15/doc/_search
{
  "query": {
    "match": {
      "message": "get_token.php"
    }
  },
  "highlight": {
    "fields": {"message": {}}
  }
}

#创建测试索引
PUT /news
DELETE /news

# 会将文本做最细粒度的拆分
POST /news/international/_mapping
{
  "properties": {
    "content":{
      "type": "text",
      "analyzer": "ik_max_word",  
      "search_analyzer": "ik_max_word"
    }
  }
}
  

#插入测试数据  
POST /news/international/_bulk
{"index":{"_id":1} }
{"content":"美国留给伊拉克的是个烂摊子吗"}
{"index":{"_id":2}}
{"content":"公安部:各地校车将享最高路权"}
{"index":{"_id":3}}
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
{"index":{"_id":4}}
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}


#根据关键词高亮查询
GET /news/international/_search
{
  "query": {
    "match": {
      "content": "中国"
    }
  },
  "highlight": {
    "fields": {"content": {}}
  }
}

##IK词典扩展次扩展槽词配置
POST news/_analyze
{
  "field": "content",
  "analyzer":"ik_max_word",
  "text": ["中国渔船"]
}

POST news/_analyze
{
  "field": "content",
  "text": ["渔警"]
}


POST /_analyze
{
  "analyzer": "ik_smart",
  "text": ["抖音视频真的好火啊"]
}



 

转载请注明:SuperIT » Kibana简单操作ES

喜欢 (0)or分享 (0)