查询提升取决于实际字段值

时间:2013-01-21 03:06:47

标签: boost elasticsearch

您好StackOverflowcrowd,

iam目前正在为我的网站开展弹性搜索。我的问题是: 是否可以根据字段的值来提升查询。

实施例: 我有一个名为premiumlevel的字段。如果“Datarow”包含4的premium级别,则boost值为40,如果为3,则boostvalue应为30,依此类推。 Boost = fieldvalue乘以10

有没有办法实现这样的查询?我看到了一种类似日期范围查询的方法,但我从未找到过将该字段的实际值用于提升值计算的示例。

编辑:

我想我刚刚找到了问题的解决方案。 如果我获得了正确的文档,那么可以通过CustomScore Queries实现我的目标。在我完全测试后,我将用我的代码片编辑这个答案。

这是Documentationparagraph: http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query.html

P.S。:在我认为8小时之前不允许新用户回答他们自己的问题的规则在我的诚实意见中是不合逻辑的。

1 个答案:

答案 0 :(得分:0)

我能想到做你想做的事的唯一方法就是实际索引提升值:

来自文档:http://www.elasticsearch.org/guide/reference/mapping/boost-field.html

{
  "tweet" : {
    "_boost" : {"name" : "_boost", "null_value" : 1.0}
  }
}
  

上面的映射定义了名为_boost的字段的映射。如果索引的JSON文档中存在_boost字段,则其值将控制索引文档的提升级别。