gpt4 book ai didi

date - ElasticSearch - 按日期排序

转载 作者:行者123 更新时间:2023-11-29 02:48:11 31 4
gpt4 key购买 nike

我有一个 Elasticsearch 索引,我无法使用映射设置每个字段,因此日期以字符串形式输入...

有谁知道我将如何根据该字符串日期进行排序?

我看过_script

{
"query" : {
....
},
"sort" : {
"_script" : {
"script" : "doc['field_name'].value",
"type" : "string",
"order" : "asc"
}
}
}

但这失败了,因为它是一个分析字段......

任何建议都会很棒!

谢谢

最佳答案

如果日期格式已知,您可以将该格式添加到 dynamic_date_formats(查看此 link)设置。当您索引一个新的字符串字段时,它将被转换为可以按正常方式排序的日期类型。

例子:

创建一个没有属性的索引:

curl -XPUT http://localhost:9200/dates -d '
{
"dates" : {
"dynamic_date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy"],
"properties" : {
}
}
}'

索引 2 文档:

curl -XPUT 'http://localhost:9200/dates/dates/1' -d '
{
"arbitraryDate": "2013-01-01"
}'

curl -XPUT 'http://localhost:9200/dates/dates/2' -d '
{
"arbitraryDate": "2012-01-01"
}'

如果检查映射,您会发现该字段不是字符串:

curl -XGET 'http://localhost:9200/dates/_mapping'

结果:

{
"dates": {
"dates": {
"properties": {
"arbitraryDate": {
"type": "date",
"format": "dateOptionalTime"
}
}
}
}
}

现在您可以轻松排序:

curl -XGET 'http://localhost:9200/dates/_search' -d '
{
"query": {
"match_all": {}
},
"sort": [
{
"arbitraryDate": {
"order": "asc"
}
}
]
}'

关于date - ElasticSearch - 按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405195/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com