目录
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>
这里我们使用Postman向Elasticsearch发送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分词,返回包含rkyao或hello的数据,结果可能为
- 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) 多字段模糊查询,返回name或address字段中包含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逻辑,查询name或address字段中包含rkyao或hello的数据
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

4020

被折叠的 条评论
为什么被折叠?



