Elasticsearch 2.x排序,缺失值视为0.0

时间:2017-02-16 09:33:40

标签: elasticsearch elasticsearch-mapping

根据映射字段,我的排序是double类型 我期待将缺失值视为0,因为我有一些负值,我希望它们低于缺失值。 (目前失踪率低于负值)

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

exists个查询(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html),可以与not查询(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)中的function score过滤器一起用于排序,并提供在您的情况下,需要提升/得分为缺失值为0.0。

但是我建议使用更简单的解决方案 - 只需使用该字段索引文档等于0.0而不是缺失值,它将使事情变得更加容易 - 您将能够对所需的字段进行排序。

答案 1 :(得分:0)

您似乎描述了丢失,或null_value值应作为0值处理。如果您不需要将它们与实际的“0”值区分开来,则可以使用PUT test { "mappings": { "my_type": { "properties": { "status_code": { "type": "integer", "null_value": 0 } } } } } PUT test/my_type/1 { "status_code": null } PUT test/my_type/2 { "status_code": -1 } PUT test/my_type/3 { "status_code": 1 } GET test/my_type/_search { sort" : [ { "status_code" : "desc" }, ] } ,请参阅the manual

如果你这样做,在另一种情况下,必须区分它们,你可能需要添加一个标志或其他东西(所以第二个字段)来实际说“但这实际上是缺失的”,但这实际上取决于你的用例< / p>

一个简单的例子:

2, 1, 3

这将按预期ng-options按顺序返回文档