我是elasticsearch的新手。在elasticsearch中,我们几乎可以在所有查询中使用术语boost。我知道它用于修改文档的分数。但我无法找到它的实际用途。我怀疑的是,如果我在某些查询中使用提升值,它是否会影响搜索的最终得分或索引本身中文档的提升等级。
在索引提升和查询提升之间的主要区别是什么。
先谢谢..!
答案 0 :(得分:10)
查询时间提升允许您为一个查询赋予更多权重而不是另一个查询。例如,假设您正在查询“Quick Brown Fox”的title
和body
字段,您可以将其写为:
{
"query": {
"bool": {
"should": [
{
"match": {
"title": "Quick Brown Fox"
}
},
{
"match": {
"body": "Quick Brown Fox"
}
}
]
}
}
}
但您决定希望title
字段比body
字段更重要,这意味着您需要在boost
字段上title
查询(例如)2:
{
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"query": "Quick Brown Fox",
"boost": 2
}
}
},
{
"match": {
"body": "Quick Brown Fox"
}
}
]
}
}
}
(注意match
子句的结构如何更改以容纳boost
参数。)
boost
的{{1}}值不会使2
完全加倍 - 分数会经过规范化过程。因此,您应该将_score
视为使此查询子句比其他查询子句更重要。
我怀疑是否在某些查询中使用了提升值。会影响搜索的最终得分
是的,但你不应该依赖boost
的实际价值。其唯一目的是允许Elasticsearch决定哪些文档与此查询最相关 。如果查询更改,则分数会更改。
重新启动索引时间:不要使用它。它不灵活,容易出错。
答案 1 :(得分:1)
查询时的提升不会修改您的索引。它只在搜索时对字段应用提升因子。
我更喜欢在查询时提升,因为它更灵活。如果您需要更改提升规则并且已在索引时设置它,则可能需要重新索引。