GET /_cat/health?v 查看健康状态 ?v 显示字段名
GET /_cat/nodes?v 查看节点情况
GET /_cat/indices?v 查看索引
PUT /customer?pretty 添加名为customer的索引
添加数据:
PUT /customer/doc/1?pretty 为customer 添加标识为1的文档,内容为"name":"John doe" pretty打印响应json { "name": "John Doe" }
如果客户索引事先不存在,则Elasticsearch将自动创建索引。标识同理。
POST /customer/doc?pretty 使用post将自动创建标识 { "name": "Jane Doe" }
若多次执行PUT /customer/doc/1?pretty,则提交的json内容将替换标识1下的文档
GET /customer/doc/1?pretty 查看customer索引下标识id为1的文档内容
DELETE /customer?pretty 删除customer索引
更新:
POST /customer/doc/1/_update?pretty 更新标识为1的文档,添加年龄字段 { "doc": { "name": "Jane Doe" ,"age":20} }
POST /customer/doc/1/_update?pretty 简单脚本,年龄将增加5,ctx.source指即将更新的当前源文档(没有修改源文档) { “script”:“ctx._source.age += 5” }
批处理:
POST /customer/doc/_bulk?pretty 更新1、2两篇文档 {"index":{"_id":"1"}} {"name": "John Doe" } {"index":{"_id":"2"}} {"name": "Jane Doe" } POST /customer/doc/_bulk?pretty更新文档1,删除文档2 {"update":{"_id":"1"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"2"}}
精确删除操作、排序
POST twitter/_delete_by_query _delete_by_query
对匹配查询的每个文档执行删除操作
{
"query": {
"match": {
"message": "some message"
}
}
}
GET /bank/_search?q=*&sort=account_number:asc&pretty
q=*标识所有文档,sort=account_number:asc表示按照account_number进行排序
结果:
took - Elasticsearch执行搜索的时间(以毫秒为单位)
timed_out - 告诉我们搜索是否超时
_shards - 告诉我们搜索了多少个分片,以及搜索成功/失败分片的数量
hits - 搜索结果
hits.total - 符合我们搜索条件的文档总数
hits.hits - 实际的搜索结果数组(默认为前10个文档)
hits.sort - 对结果进行排序键(如果按分数排序则丢失)
hits._score并max_score- 暂时忽略这些字段
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
设置查找属性
GET /bank/_search { "query": { "match_all": {} }, "from": 10, 起始文档位置 "size": 10 展示文档数量 }
精确查找
GET /bank/_search { “query”:{“match_all”:{}}, “_source”:[“account_number”,“balance”] 只显示bank索引的account_number和balance对应字段 }
精确匹配及模糊查找
GET / bank / _search { “query”:{“match”:{“address”:“mill lane”}} 精确匹配“address”:“maill lane” }
若要模糊匹配,则需要将“match”更换成“match_phrase”匹配词组
多项匹配
GET / bank / _search / bank / _search { “query”:{ “bool”:{ #bool与must配套使用 “must”:[ {“match”:{“address” :“mill”}}, {“match”:{“address”:“lane”}} ] } } }
#must 必须出现在文档中 must字句中match所有都必须为真
#filter 必须出现在文档中,忽略scor, filter 字句中所有match都必须为真
#should 字句应出现在文档中,bool中若有must或者filter子句, should中任何一个match匹配都视为匹配
#must_not 不得出现在匹配的文档。字句在过滤上下文中执行,忽略scor使用子句进行高速缓存。 所有match都不匹配
GET / bank / _search { “query”:{ “bool”:{ “must”:{“match_all”:{}}, “filter”:{ “range”:{ #范围 “balance”:{ “gte”:20000, #大于 “lte”:30000 #小于 } } } } } }
GET /bank/_search { "size": 0, "aggs": { "group_by_state": { 按状态对所有账户分组 "terms": { "field": "state.keyword" } } } }
类似于SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC
GET /bank/_search { "size": 0, "aggs": { "group_by_age": { 按年龄20-29 。。。分组 最后得到每个年龄段的平均账户余额 "range": { "field": "age", "ranges": [ { "from": 20, "to": 30 }, { "from": 30, "to": 40 }, { "from": 40, "to": 50 } ] }, "aggs": { "group_by_gender": { "terms": { "field": "gender.keyword", "order":{ #排序 "average_balance":"desc" } }, "aggs": { "average_balance": { 基于组合进行计算 "avg": { "field": "balance" } } } } } } } }