Elastic

时间:2015-12-21 17:08:25

标签: elasticsearch indexing

我正在使用Elastic 1.7.3,我希望在索引中的某些字段上增加一些文档,例如这个虚构的例子:

{
title: "Mickey Mouse",
content: "Mickey Mouse is a fictional ...",
related_articles: [
    {"title": "Donald Duck"},
    {"title": "Goofy"}
]
}

这里例如:标题非常重要,内容也是如此,related_articles更为重要。我的真实文档有很多字段和嵌套对象。

我想更多地重视标题字段而不是内容,更多的内容比related_articles更重要。

我看过title^5方式,但我必须在每个查询中使用它,我必须(我猜)列出我的所有字段而不是" _all"查询。 我做了很多搜索,但我找到了很多不推荐的解决方案(例如_boost)。

因为我曾经和Sphinx一起工作:我搜索的东西就像字段权重选项一样,你可以给索引一些权重,这些权重在索引中非常重要。

1 个答案:

答案 0 :(得分:1)

您已经弃用了可以在类型级别使用的_boost元字段,这是对的。

但是,在映射中定义每个字段时,您仍然可以使用boost property,这将在索引时提升您的字段。

您的映射将如下所示:

{
    "my_type": {
        "properties": {
            "title": {
                "type": "string", "boost": 5
            },
            "content": {
                "type": "string", "boost": 4
            },
            "related_articles": {
                "type": "nested",
                "properties": {
                    "title": {
                        "type": "string", "boost": 3
                    }
                }
            }
        }
    }
}

但是,您必须意识到,在索引时提升字段并不一定是个好主意,因为一旦设置,除非您愿意重新索引所有文档,否则不能更改它,而使用查询 - 时间增强可以达到同样的效果,并且可以更容易地改变。