Elasticsearch:使用处理器对数组进行排序
Posted Elastic 中国社区官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch:使用处理器对数组进行排序相关的知识,希望对你有一定的参考价值。
如果你想知道是否可以对数组进行排序,答案是肯定的。使用 sort 处理器,我们可以按升序或降序对元素数组进行排序。对数组的元素进行升序或降序排序。 同构数字数组将按数字排序,而字符串数组或字符串+数字的异构数组将按字典顺序排序。 当字段不是数组时抛出错误。
让我们运行两个示例:字符串数组和数值数组。
数组字符串
在 array_field_to_sort 字段中,我们有值 amber、simon、back,我们将按升序排序以获得排序:amber”、back、simon。
POST /_ingest/pipeline/_simulate?verbose=true
"pipeline":
"description": "sort array string",
"processors": [
"sort":
"field": "array_field_to_sort",
"order": "asc"
]
,
"docs": [
"_index": "index",
"_id": "id",
"_source":
"array_field_to_sort": [
"amber", "simon", "back"
]
]
上述命令的输出为:
"docs": [
"processor_results": [
"processor_type": "sort",
"status": "success",
"doc":
"_index": "index",
"_id": "id",
"_version": "-3",
"_source":
"array_field_to_sort": [
"amber",
"back",
"simon"
]
,
"_ingest":
"pipeline": "_simulate_pipeline",
"timestamp": "2023-02-03T07:51:04.618494501Z"
]
]
从输出中,我们可以看出来字符串是安装升序来进行排列的。
数值数组
现在让我们使用一个内部数组。 元素 5、2、1、12 ,20 将按 1、2、5、12 ,20 的升序排序。
POST /_ingest/pipeline/_simulate?verbose=true
"pipeline":
"description": "sort array numeric",
"processors": [
"sort":
"field": "array_field_to_sort",
"order": "asc"
]
,
"docs": [
"_index": "index",
"_id": "id",
"_source":
"array_field_to_sort": [
5,
2,
1,
12,
20
]
]
上述命令的输出为:
"docs": [
"processor_results": [
"processor_type": "sort",
"status": "success",
"doc":
"_index": "index",
"_id": "id",
"_version": "-3",
"_source":
"array_field_to_sort": [
1,
2,
5,
12,
20
]
,
"_ingest":
"pipeline": "_simulate_pipeline",
"timestamp": "2023-02-03T07:53:13.517706963Z"
]
]
以上是关于Elasticsearch:使用处理器对数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch系列---相关性评分算法及正排索引