我正在使用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一起工作:我搜索的东西就像字段权重选项一样,你可以给索引一些权重,这些权重在索引中非常重要。
答案 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
}
}
}
}
}
}
但是,您必须意识到,在索引时提升字段并不一定是个好主意,因为一旦设置,除非您愿意重新索引所有文档,否则不能更改它,而使用查询 - 时间增强可以达到同样的效果,并且可以更容易地改变。