ES7 基础语法学习
个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/15079858.html
索引的操作
查看所有索引:
GET /_cat/indices?v
创建索引:
PUT /索引名称
PUT /people
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "people"
}
删除索引 :
DELETE /索引名称
DELETE /ecommerce
{
"acknowledged" : true
}
给索引插入数据:
##自动创建ID
POST /索引名称/_doc
##指定id,插入or更新
POST /索引名称/_doc/id
PUT /索引名称/_doc/id
POST /people/_doc {
"name":"lala",
"age":19
}
POST /people/_doc/3 {
"name":"gaga",
"age":19
}
PUT /people/_doc/4 {
"name":"kaka",
"age":19
}
更新指定字段:
POST /索引名称/_update/id {
"doc":{
// 更新内容
}
}
POST /people/_update/4 {
"doc":
{"age":30}
}
##支持简单脚本
POST /people/_update/5 {
"script": "ctx._source.age += 10"
}
删除数据:
DELETE /索引名称/_doc/id
DELETE /people/_doc/4
查询数据:
# 查询所有
GET /索引名称/_search
# 根据ID查询
GET /索引名称/_doc/id
GET /people/_doc/4
Query String
查询全部:
GET /索引名称/_search
字段说明:
- took:耗费了几毫秒
- timed_out:是否超时
- _shards:数据拆成几个分片(以及成功/失败的分片计数),所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)
- hits.total:查询结果的数量,即几个document
- hits.total.value:确切总命中计数的值
- hits.total.relation:
- hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
- hits.hits:包含了匹配搜索的document的详细数据
- hits.sort:结果排序键
简单按条件查找:
##查找name为“gigi”的记录
GET /people/_search?q=name:"gigi"
##查找name为“gigi”的记录,只返回name,age两个字段
GET /people/_search?q=name:"gigi"&_source=name,age
##查找name为“gigi”的记录,只返回name,age两个字段,并按年龄降序
GET /people/_search?q=name:"gigi"&_source=name,age&sort=age:desc
##查找name为“gigi”并且age为18的记录
GET /people/_search?q=name:"gigi"&q=age:20'
Query DSL
查询全部:
GET /索引名称/_search {
"query": { "match_all": {} }
}
按条件查找:
##查找name为“gigi”的记录
GET /people/_search {
"query": {
"match": { "name": "gigi" }
}
}
返回特定字段:
##查找name为“gigi”的记录,只返回name,age两个字段
GET /people/_search {
"query": {
"match": { "name": "gigi"}
},
"_source" : ["name", "age"]
}
排序:
##查找name为“gigi”的记录,只返回name,age两个字段,并按年龄降序
GET /people/_search {
"query": {
"match": { "name": "gigi"}
},
"_source" : ["name", "age"],
"sort": [
{
"age" : {"order": "desc"}
}
]
}
分页查询:
GET /people/_search {
"query": {
"match_all": {}
},
"from": 2,
"size": 2
}
- from 从第几条开始,起始为0
- size 返回多少条记录
bool查询:
##搜索address中包含"mill"或"lane"的文档:
GET/bank/_search {
"query" : {
"match" : { "address" : "mill lane"}
}
}
##搜索address中包含"mill"和"lane"的文档:
GET /bank/_search {
"query" : {
"bool" : {
"must" : [ {
"match" : { "address" : "mill" }
},
{
"match" : { "address" : "lane" }
}
]
}
}
}
##搜索address中既不包含"mill"也不包含"lane"的文档:
GET /bank/_search {
"query" : {
"bool" : {
"must_not" : [ {
"match" : { "address" : "mill" }
},
{
"match" : { "address" : "lane" }
}
]
}
}
}
##搜索年龄40岁并且state中不包含ID的文档:
GET /bank/_search {
"query" : {
"bool" : {
"must" : [ {
"match" : { "age" : "40" }
}
],
"must_not" : [ {
"match" : { "state" : "ID" }
}
]
}
}
}
range查询:
##搜索20000=<balance<=30000的文档:
GET /bank/_search {
"query" : {
"bool" : {
"must" : { "match_all" : {}
},
"filter" : {
"range" : { "balance" : {
"gte" : "20000",
"lte" : "30000" }
}
}
}
}
}