use*_*082 6 date elasticsearch
我有一个弹性搜索索引,我不能用映射设置每个字段,所以日期以字符串形式进行...
有谁知道我将如何排序该字符串日期?
我看过_script
{
"query" : {
....
},
"sort" : {
"_script" : {
"script" : "doc['field_name'].value",
"type" : "string",
"order" : "asc"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这失败了因为它的分析领域......
任何建议都会很棒!
谢谢
如果已知日期格式,则可以将该格式添加到dynamic_date_formats(签出此链接)设置.索引新字符串字段时,它将转换为日期类型,可以按正常方式排序.
例:
创建没有属性的索引:
curl -XPUT http://localhost:9200/dates -d '
{
"dates" : {
"dynamic_date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy"],
"properties" : {
}
}
}'
Run Code Online (Sandbox Code Playgroud)
索引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"
}'
Run Code Online (Sandbox Code Playgroud)
如果检查映射,您将看到该字段不是字符串:
curl -XGET 'http://localhost:9200/dates/_mapping'
Run Code Online (Sandbox Code Playgroud)
结果:
{
"dates": {
"dates": {
"properties": {
"arbitraryDate": {
"type": "date",
"format": "dateOptionalTime"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以轻松排序:
curl -XGET 'http://localhost:9200/dates/_search' -d '
{
"query": {
"match_all": {}
},
"sort": [
{
"arbitraryDate": {
"order": "asc"
}
}
]
}'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15926 次 |
最近记录: |