ELK 之 Kibana

目录

创建索引

插入数据

更新数据

删除数据

查询数据


kibana 汉化

修改 kibana 的配置文件 /config/kibana.yml
修改其中i18n配置为  i18n.locale: "zh-CN"  并且去掉注释,可以实现汉化

Elasticsearch为开发者提供了丰富的基于Http协议的 RESTful API,通过简单的Rest请求,就可以实现非常强大的功能。RESTful API基本格式如下,以http方法决定动作:GET/PUT/POST/DELETE

http://<ip>:<port>/<索引>/<类型>/<文档id>

这里我们使用PostmanElasticsearch发送RESTful API请求。

一、创建索引

创建一个名为people的索引,其中包含一个名为student的类型,该类型有四个属性,姓名name、地址address、年龄age、生日birthday

URL: http://192.168.255.150:9200/people
METHOD: PUT
Content-Type: application/json
REQUEST:
    {
        "settings": {
            "number_of_shards": "5",
            "number_of_replicas": "1"
        },
        "mappings": {
            "student": {
                "properties": {
                    "name": {
                        "type": "text"
                    },
                    "address": {
                        "type": "keyword"
                    },
                    "age": {
                        "type": "integer"
                    },
                    "birthday": {
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss||epoch_millis"
                    }
                }
            }	
        }
    }

二、插入数据

1. 指定文档id插入

id需在在url中手动指定,例如指定id为1,插入文档到people索引,student类型

URL: http://192.168.255.150:9200/people/student/1
METHOD: PUT
Content-Type: application/json
REQUEST:
    {
		"name": "rkyao",
		"address": "杭州",
		"age": 26,
		"date": "1994-01-01 12:00:00"
	}

2. 自动生成文档id插入

id会自动生成不需手动指定

URL: http://192.168.255.150:9200/people/student
METHOD: POST
Content-Type: application/json
REQUEST:
    {
		"name": "rkyao2",
		"address": "杭州",
		"age": 26,
		"date": "1994-01-01 12:00:00"
	}

三、更新数据

更新操作需在url中加上关键词_update

1. 直接更新

直接更新索引为people,类型为student,id为1的文档,修改name字段

URL: http://192.168.255.150:9200/people/student/1/_update
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "doc": {
            "name":"Q"
        }
    }

2. 脚本更新

(1) 脚本更新索引为people,类型为student,id为1的文档,将age字段加1

URL: http://192.168.255.150:9200/people/student/1/_update
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "script": {
            "lang": "painless",
            "inline": "ctx._source.age += 1"
        }
    }

(2) 脚本更新索引为people,类型为student,id为1的文档,将age字段设置为25

URL: http://192.168.255.150:9200/people/student/1/_update
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "script": {
            "lang": "painless",
            "inline": "ctx._source.age = params.age",
            "params": {
                "age" : 25
            }
        }
    }

四、删除数据

1. 删除文档

删除索引为people,类型为student,id为1的文档

URL: http://192.168.255.150:9200/people/student/1
METHOD: DELETE

2. 删除索引

删除索引people

URL: http://192.168.255.150:9200/people
METHOD: DELETE

五、查询数据

1. 简单查询

查询条件放在url中,例如查询people索引student类型中id为1的数据

URL: http://192.168.255.150:9200/people/student/1
METHOD: GET

2. 条件查询

url中需添加关键字_search

(1) 查询所有数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "match_all": {}
        }
    }

(2) 指定返回条数

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "match_all": {}
        },
        "from": 1,
        "size": 2
    }

(3) match模糊查询,查询字段为name,查询值为rkyao hello,查询时会先将rkyao hello分词,返回包含rkyaohello的数据,结果可能为

  • rkyao
  • hello
  • rkyao hello
  • hello rkyao
  • hello haha rkyao
  • rkyao haha hello
URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "match": {
                "name": "rkyao hello"
            }
        }
    }

(4) match_phrase模糊查询,查询字段为name,查询值为rkyao hello,查询时会将rkyao hello作为一个整体去模糊匹配,结果可能为

  • rkyao hello
  • rkyao hello haha
  • haha rkyao hello
URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "match_phrase": {
                "name": "rkyao hello"
            }
        }
    }

(5) 多字段模糊查询,返回nameaddress字段中包含rkyao的数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "multi_match": {
                "query": "rkyao",
                "fields": ["name", "address"]
            }
        }
    }

(6) query_string语法查询,语法可以包含在查询值里,例如使用OR逻辑,查询nameaddress字段中包含rkyaohello的数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "query_string": {
                "query": "rkyao OR hello",
                "fields": ["name", "address"]
            }
        }
    }

(7) term精确查询,查询address杭州的数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "term": {
                "address": "杭州"
            }
        }
    }

(8) 范围查询,查询age在20到30之间的数据

gte大于等于,lte小于等于,gt大于,`lte小于

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "range": {
                "age": {
                    "gte": 20,
                    "lte": 30
                }
            }
        }
    }

(9) 子条件查询,查询时只判断文档是否满足条件,不计算匹配度

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "bool": {
                "filter": {
                    "term": {
                        "name": "rkyao"
                    }
                }
            }
        }
    }

(10) 指定排序,例如日期birthday降序返回

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "match": {
                "name": "rkyao"
            }
        },
        "sort": [
            {
                "birthday": {"order": "desc"}
            }
        ]
    }

(11) 查询函数,可使用一些函数进行较复杂的查询操作,如terms、stats、max、min等,下面示范根据字段age进行聚合查询

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "aggs": {
            "group_by_age": {
                "terms": {
                    "field": "age"
                }
            }
        }
    }

3. 复合查询

(1) 固定分数查询,可以通过boost固定分数,不支持 match 只支持 filter

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "constant_score": {
                "filter": {
                    "match": {
                        "name": "rkyao"
                    }
                },
                "boost": 2
            }
        }
    }

(2) 布尔查询

should关键字,查询name包含rkyao或者address包含杭州的数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "bool": {
                "should": [
                    {
                        "match": {
                            "name": "rkyao"
                        }
                    },
                    {
                        "match": {
                            "address": "杭州"
                        }
                    }
                ]
            }
        }
    }

must关键字,查询name包含rkyao并且address包含杭州的数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "bool": {
                "must": [
                    {
                        "match": {
                            "name": "rkyao"
                        }
                    },
                    {
                        "match": {
                            "address": "杭州"
                        }
                    }
                ]
            }
        }
    }

must_not关键字,查询name不包含rkyao并且address不包含杭州的数据

URL: http://192.168.255.150:9200/people/student/_search
METHOD: POST
Content-Type: application/json
REQUEST:
    {
        "query": {
            "bool": {
                "must_not": [
                    {
                        "match": {
                            "name": "rkyao"
                        }
                    }
                ]
            }
        }
    }

其他

# 查询
GET person/_search
# 计数
GET person/_count
# sql查询
GET _sql?format=json
{
  "query":"select * from person limit 10"
}
# 删除
DELETE person
# 修改索引名称
POST _reindex
{
  "source":{
    "index":"person"
  },
  "dest":{
    "index":"person_bak"
  }
}

ElasticSearch 查询数据量限制

PUT _all/_settings
{
  "index.max_result_window":100000
}

注:DBeaver 连接 elasticsearch 配置

1. 查看服务器es的license信息,发现 “type” : “basic”

GET /_license

2. 修改为30天使用版

POST /_license/start_trial?acknowledge=true&pretty

3.  修改为 基础版

POST /_license/start_basic?acknowledge=true&pretty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值