1.准备测试索引( es 版本6)
PUT array_value_test
{
"mappings": {
"_doc": {
"properties": {
"num": {
"type": "long"
}
}
}
}
}
2.PUT 测试数据
POST _bulk
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "1" } }
{ "num" : [0,1] }
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "2" } }
{ "num" : [1,1] }
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "3" } }
{ "num" : [0,1] }
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "4" } }
{ "num" : [0,1,2] }
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "5" } }
{ "num" : [1,1,2] }
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "6" } }
{ "num" : [1,1,0] }
{ "index" : { "_index" : "array_value_test", "_type" : "_doc", "_id" : "7" } }
{ "num" : [3] }
3.排序测试(直接降序排)
GET array_value_test/_search
{
"sort": [
{
"num": {
"order": "desc"
}
}
]
}
4.结果,可以看到,默认降序排序是以数组中最大值来进行排序的
{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 7,
"max_score" : null,
"hits" : [
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "7",
"_score" : null,
"_source" : {
"num" : [
3
]
},
"sort" : [
3
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "5",
"_score" : null,
"_source" : {
"num" : [
1,
1,
2
]
},
"sort" : [
2
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "4",
"_score" : null,
"_source" : {
"num" : [
0,
1,
2
]
},
"sort" : [
2
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "2",
"_score" : null,
"_source" : {
"num" : [
1,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "6",
"_score" : null,
"_source" : {
"num" : [
1,
1,
0
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "3",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
}
]
}
}
现在,直接看官网有哪些模式es 排序
最后一行说了,默认升序是以数组中最小的值来排序,降序是以数组中最大值来排序。
然后我们看到,还有三种排序模式,求和,均值和中位数。OK,我们试下效果。
1.求和
GET array_value_test/_search
{
"sort": [
{
"num": {
"order": "desc",
"mode": "sum"
}
}
]
}
结果
{
"took" : 3,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 7,
"max_score" : null,
"hits" : [
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "5",
"_score" : null,
"_source" : {
"num" : [
1,
1,
2
]
},
"sort" : [
4
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "4",
"_score" : null,
"_source" : {
"num" : [
0,
1,
2
]
},
"sort" : [
3
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "7",
"_score" : null,
"_source" : {
"num" : [
3
]
},
"sort" : [
3
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "2",
"_score" : null,
"_source" : {
"num" : [
1,
1
]
},
"sort" : [
2
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "6",
"_score" : null,
"_source" : {
"num" : [
1,
1,
0
]
},
"sort" : [
2
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "3",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
}
]
}
}
2 均值
GET array_value_test/_search
{
"sort": [
{
"num": {
"order": "desc",
"mode": "avg"
}
}
]
}
结果
{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 7,
"max_score" : null,
"hits" : [
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "7",
"_score" : null,
"_source" : {
"num" : [
3
]
},
"sort" : [
3
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "5",
"_score" : null,
"_source" : {
"num" : [
1,
1,
2
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "2",
"_score" : null,
"_source" : {
"num" : [
1,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "4",
"_score" : null,
"_source" : {
"num" : [
0,
1,
2
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "6",
"_score" : null,
"_source" : {
"num" : [
1,
1,
0
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "3",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
}
]
}
}
3 中位数
GET array_value_test/_search
{
"sort": [
{
"num": {
"order": "desc",
"mode": "median"
}
}
]
}
结果
{
"took" : 5,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 7,
"max_score" : null,
"hits" : [
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "7",
"_score" : null,
"_source" : {
"num" : [
3
]
},
"sort" : [
3
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "5",
"_score" : null,
"_source" : {
"num" : [
1,
1,
2
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "2",
"_score" : null,
"_source" : {
"num" : [
1,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "4",
"_score" : null,
"_source" : {
"num" : [
0,
1,
2
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "6",
"_score" : null,
"_source" : {
"num" : [
1,
1,
0
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
},
{
"_index" : "array_value_test",
"_type" : "_doc",
"_id" : "3",
"_score" : null,
"_source" : {
"num" : [
0,
1
]
},
"sort" : [
1
]
}
]
}
}
好啦,结束,主页旁边的2022也不是空白了😄