Elasticsearch:如何把两个索引连在一起

本文介绍了如何在Kibana的Discover中同时搜索两个不同索引的内容。方法一是通过创建alias,将两个索引关联到一个join_index,然后使用该alias进行搜索;方法二是直接在indexpattern中包含两个索引的名字,如good,nice,并以此进行搜索。这两种方法都允许用户方便地对多个索引进行联合查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们的实际工作中,我们有可能会遇到这样的情况,我们想在 Kibana 的 Discover 中同时搜索两个不同的索引,当时我们并不想把这两个索引导入到一个索引中,那么我们该如何处理这种情况呢?

假如我们有如下的两个索引:

PUT good/_doc/1
{
  "content": "good",
  "field1": "this is field 1"
}

PUT nice/_doc/1
{
  "content": "nice",
  "field2": "this is field 2"
}

在上面,我们创建了两个不同的索引,它们的名字也不同。一个叫做 good,而另外一个叫做 nice。在这两个索引中,它们有一个共同的字段 content。在某些情况下,我们想同时搜索这两个索引中的 content 字段。那么我们该怎么办呢?

方法一

我们可以使用 alias 来达到这个目的。我们可以使用如下的方法:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "good",
        "alias": "join_index"
      }
    },
    {
      "add": {
        "index": "nice",
        "alias": "join_index"
      }
    }
  ]
}

在上面,我们定义了一个叫做 join_index 的 alias。它可以同时用来访问 good 及 nice 索引。我们为这个 join_index 创建一个 index pattern:

这样,我们就可以使用 join_index 进行搜索:

GET join_index/_search
{
  "query": {
    "match": {
      "content": "good"
    }
  }
}

 或者,使用 join_index 来在 Discocer 中进行搜索:

这个个方法适用于几乎所有的情况,包含名字没有相似的情况。

方法二 

针对索引的名称不是很多的情况,我们甚至直接来创建一个 index pattern,而这个 index pattern 可以同时包含这两个索引的名字:

 

在上面,我们定义了一个叫做 good,nice 的 index pattern。看起来是不是很奇怪啊?它的名字中间有一个逗号分开两个索引的名字。在右边,我们可以看到被匹配到的索引。点击上面的 Create index pattern:

我们可以通过如下的方式来进行搜索:

GET good,nice/_search
{
  "query": {
    "match": {
      "content": "nice"
    }
  }
}

 在 Discover 中,我们也可以使用如下的方式来进行搜索:

通过这样的方法,我们可以把两个或多个索引连接起来并同时搜索它们。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值