ES的RESTful API 一些常用操作

基本概念

Elasticsearch 是 面向文档型数据库,这意味着它存储的是整个对象或者 文档,它不但会存储它们,还会为他们建立索引,这样你就可以搜索他们了。你可以在 Elasticsearch 中索引、搜索、排序和过滤这些文档。不需要成行成列的数据。这将会是完全不同的一种面对数据的思考方式,这也是为什么 Elasticsearch 可以执行复杂的全文搜索的原因。

通过 HTTP 向 RESTful API 传送 json

  1. 相应的 HTTP 请求方法 或者 变量 : GET, POST, PUT, HEAD 或者 DELETE。
  2. 集群中任意一个节点的访问协议、主机名以及端口。
  3. 请求的路径。
  4. 任意一个查询后再加上 ?pretty 就可以生成 更加美观 的JSON反馈,以增强可读性。
  5. 一个 JSON 编码的请求主体(如果需要的话)。

在 Elasticsearch 中,文档属于一种 类型(type),各种各样的类型存在于一个 索引 中。你也可以通过类比传统的关系数据库得到一些大致的相似之处:

  1. 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
  2. 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的一些梳理,

 

你可能感兴趣的:(ElasticSearch)