Elasticsearch的增删改查(含数组操作) - from chatgpt

父文章 

算法中的特征的保存, 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中的一个文档可以包含多个嵌套的字段和数组。当需要修改一个数组文档时,可以使用以下两种方法:

  1. 部分更新:

部分文档更新可以使用Update API执行,通过提交包含仅需要包含要更新字段的JSON数据块,进行更新。在JSON数据中指定当前数组项,例如,要更新数组items的第二个项目:

POST /myindex/mytype/1/_update { "doc": { "items.2": "new value" } }

这将替换第二项为新值,不需要重写拥有不变值的所有内容。

  1. 全部更新:

如果需要直接替换原有的整个数组,可以使用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这个新加的元素。

你可能感兴趣的:(elasticsearch,java,大数据)