Elasticsearch:如何把两个索引连在一起
2022年2月24日 | by mebius
在我们的实际工作中,我们有可能会遇到这样的情况,我们想在 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"
}
tgcode },
{
"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 中进行搜索:
这个个方法tgcode适用于几乎所有的情况,包含名字没有相似的情况。
方法二
针对索引的名称不是很多的情况,我们甚至直tgcode接来创建一个 index pattern,而这个 index pattern 可以同时包含这两个索引的名字:
在上面,我们定义了一个叫做 good,nice 的 index pattern。看起来是不是很奇怪啊?它的名字中间有一个逗号分开两个索引的名字。在右边,我们可以看到被匹配到的索引。点击上面的 Create index pattern:
我们可以通过如下的方式来进行搜索:
GET good,nice/_search
{
"query": {
"match": {
"content": "nice"
}
}
}
在 Discover 中,我们也可以使用如下的方式来进行搜索:
通过这样的方法,我们可以把两个或多个索引连接起来并同时搜索它们。
文章来源于互联网:Elasticsearch:如何把两个索引连在一起
相关推荐: Elasticsearch:使用算术运算的临时 Runtime field
Runtime fields 在实际的数据查询中非常有用。它的设计最初的理念就是代替之前的 Scripted fields。在很多时候,我们一开始可能还没有想到需要哪些字段来对数据进行分析。有的时候,我们需要的字段可能是由其它的字段来生产的。我们可以使用 Ma…