基于kibana的Dev Tools控制板的es常用查询语句
1.集群相关:
--- 查询集群健康状态
GET _cluster/health
--- 查询所有节点
GET _cat/nodes
--- 查询索引及分片的分布
GET _cat/shards
--- 查询所有插件
GET _cat/plugins
2.索引相关查询:
--- 查询所有索引及容量
GET _cat/indices
--- 查询索引映射结构
GET my_index/_mapping
--- 查询所有索引映射结构
GET _all
--- 查询所有的相同前缀索引
GET my-*/_search
--- 查询所有索引模板
GET _template
--- 查询具体索引模板
GET _template/my_template
--- 删除索引
DELETE my-index
索引的操作
写入索引模板
PUT _template/my_template
{
"template" : "my-*",
"order" : 0,
"settings" : {
"number_of_shards" : 10,
"number_of_replicas" : 0
},
"mappings": {
"default": {
"_all": {
"enabled": false
},
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
}
}
}
}
}
创建索引映射结构
PUT my_index
{
"mappings": {
"doc": {
"properties": {
"name": {
"type": "text"
},
"blob": {
"type": "binary"
}
}
}
}
}
写入索引
PUT my_index/doc/1
{
"name": "Some binary blob",
"blob": "U29tZSBiaW5hcnkgYmxvYg=="
}
删除索引
DELETE my-index
DSL query查询
a、查询所有
GET _search
{
"query": {
"match_all": {}
}
}
b、查询单个索引 的 固定属性
--- 精确匹配
GET _search
{
"query": {
"term": { "name" : "you" }
}
}
--- 模糊匹配
GET _search
{
"query": {
"match": { "name" : "you" }
}
}
--- 范围查找
GET _search
{
"query": {
"range": {
"age":{ "gte" : 15 , "lte" : 25 }
}
}
}
c、功能性查询
--- 过滤
GET my_index/_search
{
"query": {
"bool": {
"filter": {
"term":{"age":1095}
}
}
}
}
--- 或 or
GET my - test / _search {
"query": {
"bool": {
"should": [{
"term": {
"name": "you"
}
}, {
"match": {
"age": 20
}
}]
}
}
}
--- 与 AND
GET my-test/_search
{
"query": {
"bool": {
"must" : [{
"match" : {
"name" : "you"
}
},{
"range":{
"age":{
"from" : 10 , "to" : 20
}
}
}]
}
}
}
---必须 =
GET my_index/_search
{
"query": {
"bool": {
"must" : {
"range" : {
"age" : { "from" : 10, "to" : 20 }
}
}
}
}
}
--- 必须不 not
GET my_index/_search
{
"query": {
"bool": {
"must_not" : {
"term" : {
"name" : "you"
}
}
}
}
}
d、复合查找
GET my_index/_search
{
"query": {
"bool": {
"should": [{
"match": {
"age": 40
}
},
{
"match": {
"age": 20
}
}],
"filter": {
"match":{
"name":"you"
}
}
}
}
}
e、索引迁移
--- 场景 从A索引 复制到B索引
POST _reindex
{
"source": {
"index": "my_index"
},
"dest": {
"index": "new_my_index"
}
}
f、基于查询的删除
POST test-index/_delete_by_query
{
"query":{
"term": {
"cameraId":"00000000002"
}
}
}
--- 查询
GET test-index/_search
{
"query":{
"term": {
"cameraId":"00000000002"
}
}
}
滚动查询
目前支持滚动查询的客户端(client)只有perl版和python版。
Perl: Search::Elasticsearch::Client::5_0::Bulk and Search::Elasticsearch::Client::5_0::Scroll
Python: elasticsearch.helpers.
第一步:获取scroll id
POST /twitter/_search?scroll=1m
{
"size": 100,
"query": {
"match" : {
"title" : "elasticsearch"
}
}
}
第二步:利用scroll id进行查询
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
}
第三步:结果遍历完成后,删除scroll_id
DELETE /_search/scroll
{
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
}
删除无用的scroll有好几种方法:
1.删除一个scrollId
DELETE /_search/scroll
{
"scroll_id" : "UQlNsdDcwakFMNjU1QQ=="
}
2.删除多个scrollId
DELETE /_search/scroll
{
"scroll_id" : [
"aNmRMaUhiQlZkMWFB==",
"qNmRMaUhiQlZkMWFB=="
]
}
3.删除所有的scrollId
DELETE /_search/scroll/_all
4.search lite api的删除多个scrollId用法
DELETE /_search/scroll/aNmRMaUhiQlZkMWFB==,qNmRMaUhiQlZkMWFB==
备注:
1.常用查询语句参考文档:https://blog.csdn.net/weixin_43865381/article/details/97904321
2.滚动scroll查询:
1⃣️第一步:scroll=1m,表示“search context”存活时间1分钟。返回结果中会带有一个“_scroll_id”,这个值在后续的翻页过程中使用
2⃣️第二步:不用指定index和type,也不用其他查询条件,只要把上一步的_scroll_id即可。之后翻页一直如此,每次执行会自动滚动100条数据,直到返回的结果为空为止。每次执行间隔不要超过1分钟,否则“search context”会释放掉
3⃣️第三步:结果遍历完成后,删除scroll_id。这一步也可以不做,等1分钟后没有继续翻页请求,“search context”会自动释放掉,不过建议还是手动清除,节省资源
4⃣️参考文档:https://www.jianshu.com/p/4d1bec7bb1a4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
3.删除滚动id可以参考文档:https://blog.csdn.net/weixin_33957648/article/details/92076339
ES把缓存数据监控FieldData语句
--- 对于单个索引使用 {ref}indices-stats.html[indices-stats API]
GET /_stats/fielddata?fields=*
--- 对于单个节点使用 {ref}cluster-nodes-stats.html[nodes-stats API]
GET /_nodes/stats/indices/fielddata?fields=*
--- 或者甚至单个节点单个索引
GET /_nodes/stats/indices/fielddata?level=indices&fields=*
---通过设置 ?fields=* 内存使用按照每个字段分解了
---查询节点使用情况
curl -XGET "http://http://192.168.8.20:5601/_nodes/thread_pool/"