Elasticsearch 2.x 将缺失值视为 0.0 进行排序
Elasticsearch 2.x sort with missing value treated as 0.0
根据映射,我排序的字段是双精度类型
我期望排序将缺失值视为 0,因为我有一些负值,我希望它们低于缺失值。 (目前缺失值低于负数)
我该如何实现?
有 exists
查询 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html), which you can use along with not
filter in function score
query (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html) 用于排序,并在您的情况下为缺失值提供所需的 boost/score 作为 0.0。
但我建议更简单的解决方案 - 只需使用等于 0.0 的字段索引您的文档而不是缺失值,这将使事情变得容易得多 - 您将能够只对所需的字段进行排序。
您似乎描述了缺失值或 null
值应作为 0 值处理。如果您不需要能够将它们与实际的“0”值区分开来,您可以使用 null_value
,请参阅 the manual
如果你这样做,在另一种情况下,必须区分它们,你可能需要添加一个标志或其他东西(所以第二个字段)来实际说 "but this was actually missing",但这实际上取决于你的用例
一个简单的例子:
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" },
]
}
这将 return 按预期2, 1, 3
顺序排列文档
根据映射,我排序的字段是双精度类型 我期望排序将缺失值视为 0,因为我有一些负值,我希望它们低于缺失值。 (目前缺失值低于负数)
我该如何实现?
有 exists
查询 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html), which you can use along with not
filter in function score
query (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html) 用于排序,并在您的情况下为缺失值提供所需的 boost/score 作为 0.0。
但我建议更简单的解决方案 - 只需使用等于 0.0 的字段索引您的文档而不是缺失值,这将使事情变得容易得多 - 您将能够只对所需的字段进行排序。
您似乎描述了缺失值或 null
值应作为 0 值处理。如果您不需要能够将它们与实际的“0”值区分开来,您可以使用 null_value
,请参阅 the manual
如果你这样做,在另一种情况下,必须区分它们,你可能需要添加一个标志或其他东西(所以第二个字段)来实际说 "but this was actually missing",但这实际上取决于你的用例
一个简单的例子:
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" },
]
}
这将 return 按预期2, 1, 3
顺序排列文档