ElasticSearch,在使用批量 API 时对索引名称使用通配符



我正在使用 RabbitMQ River 插件进行 Elasticsearch 插入/删除数据到我们的 ElasticSearch 索引中。River 插件仅支持批量 API。我们目前的数据使用的是倍数索引,按日期划分的索引,类似于"indexName_yyyymmdd"

删除给定 ID 时,我们不知道该 ID 可以定位哪个索引。我们认为我们将能够使用通配符格式,例如"indexName*",就像您在搜索中所做的那样。

我们已经尝试了不同的组合,但看起来要么我们没有使用正确的语法,要么绝对不支持通配符???

Examples we have tried:
// using default index in the url …
POST /mybestfares_gb*/bestfares_data/_bulk
{ "delete": {"_id": " AUry2F0Mu2oVvm5kYHaK " }}
// index in the meta section … 
POST /_bulk
{ "delete": {"_index":"mybestfares_gb*", "_type":"bestfares_data","_id": "AUry2F0Mu2oVvm5kYHaP" }}

在这两种情况下,我们都会收到以下错误: "error": "InvalidIndexNameException[[mybestfares_gb*] Invalid index name [mybestfares_gb*], must not contain the following characters [\, /, *, ?, ", <, >, |, , ,]]"

在 ElasticSeach 文档中提到了这一点: "单索引 API(如文档 API 和单索引别名 API)不支持多个索引。"

批量 API 被归类为多文档 API,所以我跳跃只是我的问题,没有使用正确的语法?

不幸的是,

这是行不通的。如果您仔细阅读文档:

单索引 API,例如文档 API 和单索引别名 API 不支持多个索引。

,然后按照文档 API 列表的链接进行操作:

文档接口

本节介绍以下 CRUD API:

单个文档接口

  • 索引接口
  • 获取接口
  • 删除接口
  • 更新接口

多文档接口

  • 多重获取接口
  • 批量接口
  • 批量 UDP API
  • 按查询 API 删除

您将看到批量 API 和删除和按查询删除 API 都被归类为文档 API,它们不能使用通配符来覆盖多个索引:

所有 CRUD API 都是单索引 API。索引参数接受 单个索引名称,或指向单个索引的别名。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs.html

最新更新