根据映射字段,我的排序是double类型 我期待将缺失值视为0,因为我有一些负值,我希望它们低于缺失值。 (目前失踪率低于负值)
我如何实现这一目标?
答案 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
按顺序返回文档