基本概念
Elasticsearch 是 面向文档型数据库,这意味着它存储的是整个对象或者 文档,它不但会存储它们,还会为他们建立索引,这样你就可以搜索他们了。你可以在 Elasticsearch 中索引、搜索、排序和过滤这些文档。不需要成行成列的数据。这将会是完全不同的一种面对数据的思考方式,这也是为什么 Elasticsearch 可以执行复杂的全文搜索的原因。
通过 HTTP 向 RESTful API 传送 json
- 相应的 HTTP 请求方法 或者 变量 : GET, POST, PUT, HEAD 或者 DELETE。
- 集群中任意一个节点的访问协议、主机名以及端口。
- 请求的路径。
- 任意一个查询后再加上 ?pretty 就可以生成 更加美观 的JSON反馈,以增强可读性。
- 一个 JSON 编码的请求主体(如果需要的话)。
在 Elasticsearch 中,文档属于一种 类型(type),各种各样的类型存在于一个 索引 中。你也可以通过类比传统的关系数据库得到一些大致的相似之处:
- 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
- Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)
可以在curl后加-i参数得到响应头
curl -i -XGET http://localhost:9200/website/blog/124?pretty
使用postman进行的一些简单操作,kibana会有些差异,但不大
1.查看集群健康状况
GET /_cat/health?v&pretty
2.查看my_index的mapping和setting的相关信息
GET /my_index?pretty
3.查看所有的index
GET /_cat/indices?v&pretty
创建只有一个主分片,没有复制分片的小索引。
PUT /my_temp_index
{
"settings": {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
}
用 update-index-settings API 动态修改复制分片个数:
PUT /my_temp_index/_settings
{
"number_of_replicas": 1
}
删除索引
DELETE /my_index
删除多个索引
DELETE /index_one,index_two
DELETE /index_*
删除多个索引
DELETE /_all
只得到_source
字段而不要其他的元数据,你可以这样请求
GET /website/blog/123/_source
//创建索引用put ip:9200/person
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
},
"mappings":{
"man":{
"properties":{
"name":{
"type":"text"
},
"age":{
"type":"integer"
}
}
}
}
}
//手动id添加文档put(其实走的是修改) ip:9200/person/man/1
{
"name":"111",
"age":11
}
//自动id添加文档post ip:9200/person/man
{
"name":"111",
"age":11
}
//doc修改post ip:9200/person/man/1/_update
{
"doc":{
"name":"大大阿达"
}
}
//脚本修改post ip:9200/person/man/1/_update
{
"script":"painless",
"inline":"ctx._source.name = 'zzzzz'",
"inlines":"ctx._dource.nname = params.name",
"parames":{
"name":"newName"
}
}
//删除文档delete ip:9200/person/man/1
//删除索引delete ip:9200/person(无法删除类型)
//根据id查询文档get ip:9200/person/man/1
//根据条件查询分页 排序post ip:9200/person/man/_search
{
"query":{
"match":{
"name":"zzz"
},
"from":1,
"size":5,
"sort":[
"age":{
"order":"desc"
}
]
}
}
//查询全部 post ip:9200/person/man/_search
{
"query":{
"match_all":{}
}
}
//分组查询post ip:9200/person/man/_search
{
"aggs":{
"group_by_age":{
"terms":{
"field":"age"
}
}
}
}
//聚合 多行函数(也可单个max,min) post ip:9200/person/man/_search
{
"aggs":{
"many_function":{
"stats":{
"field":"age"
}
}
}
}
以上是对es的一些梳理,