有效地搜索多个索引的ID?

时间:2017-08-18 02:02:38

标签: elasticsearch elasticsearch-5

我需要获取一份文件,但我不知道它是什么索引。我有不同日期的一堆索引;所有前缀都是“mydocs-”。我试过了:

GET /mydocs-*/adoc/my_second_doc

returns "index_not_found_exception"


GET /mydocs-*/adoc/_search
{
"query": {
  "bool":{
    "filter": [{
      "term":{
      "_id": ["my_second_doc"] 
    }
    }]
  }
  }
}

returns all the docs in the index.

现在,如果我搜索特定索引,我可以获得文档。问题是我并不总是事先知道它所在的索引。所以,我必须为它搜索许多指数(数千个指数)。

GET /mydocs-12/adoc/my_second_doc

返回所需的文档。

有关如何高效获取/搜索文档的任何想法?

1 个答案:

答案 0 :(得分:0)

您是否尝试过:

GET mydocs-*/adoc/_search
{
  "query": {
        "term": {
            "_id": "my_second_doc"
        }
   }
}

或更具体地说:

GET mydocs-*/_search
{
  "query": {
    "bool": {
        "must": [
           {
               "term": {
                  "_id": "my_second_doc"
               }
           },
           {
               "term": {
                  "_type": "adoc"
               }
           }
        ]
    }
  }
}

以上两个查询将查找indexmydocs-开头,typeadocidmy_second_doc的所有文档。