5文档接口

[b]创建或者更新接口[/b]
PUT twitter/tweet/1
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}

结果为
{
"_shards" : {
"total" : 2,
"failed" : 0,
"successful" : 2
},
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1",
"_version" : 1,
"created" : true,
"result" : created
}

_shards节点代表副本信息
total:副本总数(包括住数据节点)
successful代表成功总数
failed一个包括失败节点的数组

如果索引定义没有创建,则默认会创建一份索引定义。如果想要关闭则在setting处设置action.auto_create_index为false。同样如果想关闭自动创建列关系设置,可以设置index.mapper.dynamic为false

上面是使用id为的例子,如果希望id自动生成。
POST twitter/tweet/
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}

返回
{
"_shards" : {
"total" : 2,
"failed" : 0,
"successful" : 2
},
"_index" : "twitter",
"_type" : "tweet",
"_id" : "6a8ca01c-7896-48e9-81cc-9f70661fcb32",
"_version" : 1,
"created" : true,
"result": "created"
}
发现他自动生成了一个id。
默认数据会根据id进行hash到某一个数据节点。(如果想自己控制这个hash值的话,可以通过添加参数?routing=kimchy)
可以给一个文档设置父节点。之后子节点数据会自动和父节点路由到一个数据节点。
当数据写入时,可以定义至少几个数据节点写入,才会返回(除非超时)。默认为主节点,但是可以通过动态设置
index.write.wait_for_active_shards
来改变。
或者在请求中添加参数wait_for_active_shards来改变(正确的数值为all或者自然数)。
如果想要定义过期时间可以再访问请求中添加参数:timeout=5m(5分钟)

[b]获取接口[/b]
GET twitter/tweet/0
返回
{
"_index" : "twitter",
"_type" : "tweet",
"_id" : "0",
"_version" : 1,
"found": true,
"_source" : {
"user" : "kimchy",
"date" : "2009-11-15T14:12:12",
"likes": 0,
"message" : "trying out Elasticsearch"
}
}
上述是获取twitter索引下的type为twitter的id为0的数据
同样判断他是否存在也可以使用
HEAD twitter/tweet/0


如果希望返回的数据不包括_source ,则请求参数添加_source=false
如果希望对_source里面的数据进行过滤
GET twitter/tweet/0?_source_include=*.id&_source_exclude=entities
。如果只有包含的话
GET twitter/tweet/0?_source=*.id,retweeted

使用
/{index}/{type}/{id}/_source
可以直接获取到文档信息如:
GET twitter/tweet/1/_source


可以控制那个数据节点执行请求。默认为随机的访问。可以设置为_primary,_local以及自定义。
[b]删除接口[/b]
删除id为1的数据
DELETE 'http://localhost:9200/twitter/tweet/1'

当然也可以添加routing参数指示请求落到那个数据节点上。

[b]根据搜索删除[/b]
POST twitter/twitter/_delete_by_query
{
"query": {
"match": {
"message": "some message"
}
}
}

这种条件语句和查询语句写法一样
如果想要在整个索引中搜索数据并删除的数据
POST twitter/_delete_by_query

如果要垮多个索引
POST twitter,blog/tweet,post/_delete_by_query


默认上面的删除会只删除1000条记录。同样可以自己定制删除记录数
POST twitter/_delete_by_query?scroll_size=5000

同样参数除了支持pretty外,还支持refresh, wait_for_completion, wait_for_active_shards, 和 timeout参数
refresh表示请求处理完成后会进行刷新内容
wait_for_completion=false会执行一些检查,然后返回一个任务(可以再任务接口中进行控制)。
wait_for_active_shards表示必须有多少个存活的副本才执行
timeout表示每个请求等待数据节点可用的时间
返回信息
{
"took" : 639,
"deleted": 0,
"batches": 1,
"version_conflicts": 2,
"retries": 0,
"throttled_millis": 0,
"failures" : [ ]
}

took代表消耗时间
deleted成功删除的文章数
batches查询删除返回的总数目

任务接口了解(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html)
[b]更新接口[/b]
先获取文档,然后写会数据。通过版本来确保数据没有在中间被修改过
方法同创建

如果想部分更新文档可以采用如下方式
POST test/type1/1/_update
{
"doc" : {
"name" : "new_name"
}
}

[b]根据搜索更新[/b]
这个借口需要慎重使用(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html)
[b]多个条件获取多条数据[/b]
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-get.html
[b]复杂接口[/b](bulk api)
就是一个接口中可以糅合修改,删除,添加等操作(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html)

数据重建(reindex api)
数据重建只是将数据从一个索引复制到另外一个索引中。(但是数据定义还是需要重新自己定义)如下:将所有twitter中的文章复制到new_twitter中
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}

返回类似
{
"took" : 147,
"timed_out": false,
"created": 120,
"updated": 0,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0,
"total": 120,
"failures" : [ ]
}

更细致的需求(https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值