elasticsearch索引里某个字段的类型是数组,怎么往这个数组类型的字段写入数据
时间: 2023-11-27 18:52:01 浏览: 30
往 Elasticsearch 中写入数组类型的字段可以使用以下两种方法:
1. 在写入文档时,直接将数组作为字段值传递给 Elasticsearch。例如,假设你要往名为 `my_index` 的索引中写入一个文档,其中有一个名为 `tags` 的字段是数组类型,你可以使用以下代码:
```
PUT my_index/_doc/1
{
"title": "My blog post",
"tags": ["elasticsearch", "arrays", "indexing"]
}
```
2. 如果你已经写入了文档,但是需要将数组类型的字段更新,可以使用 Elasticsearch 的 `update` API。例如,假设你已经在 `my_index` 索引中写入了一个名为 `1` 的文档,并且要将其中的 `tags` 字段更新为一个新的数组,可以使用以下代码:
```
POST my_index/_update/1
{
"doc": {
"tags": ["search", "indexing", "arrays"]
}
}
```
注意,你需要在 `doc` 对象中指定要更新的字段及其新值。如果你只想将数组中的某个元素添加到已有的数组中,可以使用 Elasticsearch 的 `script` 字段来实现。例如,假设你要将 `"elasticsearch"` 添加到 `tags` 数组中,可以使用以下代码:
```
POST my_index/_update/1
{
"script": "ctx._source.tags.add(params.tag)",
"params": {
"tag": "elasticsearch"
}
}
```
这里的 `ctx._source.tags.add(params.tag)` 表示将 `params.tag` 添加到 `tags` 数组中。你可以根据具体需求修改脚本。