如何在弹性搜索中查询特定的索引列表

时间:2019-07-08 13:32:36

标签: elasticsearch

我正在创建基于日期的弹性索引,例如-logs-2017-06-10,logs-2018-07-10,logs-2019-06-11,日期后缀可以是任何有效日期。

如何将搜索查询限制为仅针对特定天数索引进行搜索。

例如,如果我想在2018年6月9日至2018年6月11日之间搜索,则仅以下提及的索引应针对我的查询进行搜索

logs-2018-06-09, logs-2018-06-10 and logs-2018-06-11

我尝试使用通配符*,但此处无济于事。

logs-2018-06-*将在索引logs-2018-06-01 to logs-2018-06-30中搜索,这不是我的查询。

我怎么只能将其限制为 logs-2018-06-09,logs-2018-06-10 and logs-2018-06-11

2 个答案:

答案 0 :(得分:0)

GET /_search
{
    "query": {
        "indices" : {
            "indices" : ["index1", "index2"],
            "query" : { "term" : { "tag" : "wow" } },
            "no_match_query" : { "term" : { "tag" : "kow" } }
        }
    }
}

发件人:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-indices-query.html

答案 1 :(得分:0)

我没有找到任何方法来确定可以运行搜索查询的动态索引列表。

现在,作为替代方案,我将针对所有索引并基于日期范围查询运行搜索查询。

GET logs-2019-*/_search
{
    "query": {
        "range" : {
            "timestamp" : {
                "time_zone": "+01:00", 
                "gte": "2015-01-01 00:00:00", 
                "lte": "now" 
            }
        }
    }
}```