父文章
算法中的特征的保存, es 和 mysql 和 odps hadoop hbase的区别_个人渣记录仅为自己搜索用的博客-CSDN博客
以下是 Elasticsearch 的增删改查操作示例:
PUT /my_index { "settings": { "number_of_shards": 1, "number_of_replicas": 1 } }
POST /my_index/_doc { "title": "Elasticsearch 101", "author": "John Doe", "content": "This is a tutorial on Elasticsearch" }
GET /my_index/_doc/1
POST /my_index/_update/1 { "doc": { "title": "Elasticsearch 101 - Updated" } }
DELETE /my_index/_doc/1
GET /my_index/_search { "query": { "match": { "title": "Elasticsearch" } } }
以上操作的结果可以通过 Elasticsearch 的 API 返回,例如:
{ "_index": "my_index", "_type": "_doc", "_id": "1", "_version": 2, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }
这个结果表示文档已经被更新,并且版本号从 1 变成了 2。
Elasticsearch中的一个文档可以包含多个嵌套的字段和数组。当需要修改一个数组文档时,可以使用以下两种方法:
部分文档更新可以使用Update API
执行,通过提交包含仅需要包含要更新字段的JSON数据块,进行更新。在JSON数据中指定当前数组项,例如,要更新数组items的第二个项目:
POST /myindex/mytype/1/_update { "doc": { "items.2": "new value" } }
这将替换第二项为新值,不需要重写拥有不变值的所有内容。
如果需要直接替换原有的整个数组,可以使用index API
执行全文档的更新,此时新文档必须包含或重新定义完整的嵌套结构
PUT my_index/my_type/1?refresh=true
{
"name": "John Doe",
"age": 33,
"items": [ "beijing”, “shanghan”, ”shenzhen”]
}
在上例中,原有的items字段被替换成新的值。
下面是一个示例,在Elasticsearch中创建一个文档mydoc
,其中items是数组字段:
PUT /myindex/mytype/1 { "items": ["apple", "banana", "peach"] }
现在,我们可以通过查询该文档来展示原始文档:
GET /myindex/mytype/1
为items
数组添加一个新元素orange
:
POST /myindex/mytype/1/_update { "script": { "source": "ctx._source.items.add(params.newitem)", "params": { "newitem": "orange" } } }
同样,我们可以用GET请求来显示文档:
GET /myindex/mytype/1
此时获取到的文档会包含orange
这个新加的元素。