ElasticSearch,在使用批量api时在索引名称上使用Wildcard

时间:2015-01-19 10:18:50

标签: elasticsearch elasticsearch-bulk-api

我正在使用RabbitMQ River插件为Elasticsearch插入/删除数据到我们的ElasticSearch索引。 River插件仅支持Bulk 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(如Document API和单索引别名API)不支持多个索引。”

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

1 个答案:

答案 0 :(得分:4)

不幸的是,这不起作用。如果您仔细阅读文档:

  

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

然后按照指向文档API列表的链接:

  

文档API

     

本节介绍以下CRUD API:

     

单一文档API

     
      
  • Index API
  •   
  • 获取API
  •   
  • 删除API
  •   
  • 更新API
  •   
     

多文档API

     
      
  • Multi Get API
  •   
  • 批量API
  •   
  • 批量UDP API
  •   
  • 按查询API删除
  •   

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

  

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

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