繁体   English   中英

在Elasticsearch中单独索引或使用类型字段

[英]Separate indices or use type field in Elasticsearch

我正在开发Elasticsearch服务,我们有多个来源,例如我们的支持票务门户和论坛。 目前,我将每个源分成它自己的索引,因为每个源都有一个子类型。 票务门户当然会搜索票证(带有嵌套的回复),但也搜索用户等,因此门户网站索引下有多种类型。 到目前为止简单的东西

但是,我开始考虑合并索引并为类型前缀(portalTicket,portalUser,forumThread,forumUser等),因为我想要跨两个源搜索,但也许有一种方法可以查询它们并带来它一起回来。 我现在正在使用门票和线程开始小,这是我到目前为止使用的两个简单映射:

{
    ticket : {
        properties : {
            replies : {
                type : 'nested'
            }
        }
    }
}

{
    thread : {
        properties : {
            posts : {
                type : 'nested'
            }
        }
    }
}

想表明我正在使用具有不同名称的嵌套对象。 我当然可以使用相同的名称,但是还会有其他元数据附加到票证和线程映射,这些数据也将是嵌套类型,这就引出了我的问题。 当我在没有指定索引的情况下进行搜索时,我会遇到一些没有嵌套类型的问题,正如预期的那样。 线程映射没有replies属性,它是posts 我可以在过滤器中使用index来解决它:

{
    filter : {
        indices : {
            index          : 'portal',
            no_match_query : 'none',
            query          : {
                bool : {
                    should : [
                        {
                            match : {
                                title : 'help'
                            }
                        },
                        {
                            nested : {
                                path  : 'replies',
                                query : {
                                    match : {
                                        'replies.text' : 'help'
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

好吧,这适用于门户网站索引,但是将其包含在论坛索引中让我觉得我只是在与弹性搜索进行对抗并且没有正确使用它。

所以我应该将它们保存在单独的索引上并获得一个过滤器,它将返回两个索引结果,或者我应该将它们合并到一个索引中,使用一个字段来保存源并可能规范化嵌套属性,还是有一种方法可以处理多个索引指数是多方面的? (我知道,ES 2中的聚合)

阅读这两篇文章(感谢评论者指出这些帖子):

我已经确定我的数据太不同了,我预期的文件数量(以及未来的添加量)意味着我应该使用不同的索引。

现在要学习如何搜索不同的索引,但这篇文章更多的是关于我应该使用哪种策略,所以我将打开一个新的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM