将日期转换为字符串弹性搜索
Convert date to string elastic search
我想从弹性日期中获取年份 search.My 映射就像 -
"timeModified":
{
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
我在弹性搜索中的数据存储是 -
"timeModified": "2015-03-12T13:18:50.000+05:30"
我想从 date.When 中获取年份 我执行以下查询 -
{
"query" : {
"match_all": {}
},
"script_fields" : {
"left_field" : {
"script" : {
"inline": "doc.timeModified.value.substring(0, length)",
"params": {
"length": 4
}
}
}
}
}
它给了我例外 -
"No signature of method: java.lang.Long.substring() is applicable
for argument types: (java.lang.Integer, java.lang.Integer) values: [0,
4]\nPossible solutions: toString(), toString(), toString(),
toString(long, int)"
如果我可以选择将字段值日期转换为字符串而不更改我的实际映射类型,我会得到正确的值。所以请建议如何在弹性搜索查询中转换为字符串。
或者,如果有任何其他选项可以从日期中获取年份,那么也建议。
您收到的错误是因为字段值是 Long
而不是 String
。但是,您也可以像这样直接访问 date
值:
{
"query" : {
"match_all": {}
},
"script_fields" : {
"left_field" : {
"script" : {
"inline": "doc.timeModified.date.getYear()"
}
}
}
}
脚本很简单doc['timeModified'].date.year
。知道该字段的类型为 date
,ES 公开了 .date
快捷方式,其中可以使用 .year
之类的东西。
我想从弹性日期中获取年份 search.My 映射就像 -
"timeModified":
{
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
}
我在弹性搜索中的数据存储是 -
"timeModified": "2015-03-12T13:18:50.000+05:30"
我想从 date.When 中获取年份 我执行以下查询 -
{
"query" : {
"match_all": {}
},
"script_fields" : {
"left_field" : {
"script" : {
"inline": "doc.timeModified.value.substring(0, length)",
"params": {
"length": 4
}
}
}
}
}
它给了我例外 -
"No signature of method: java.lang.Long.substring() is applicable for argument types: (java.lang.Integer, java.lang.Integer) values: [0, 4]\nPossible solutions: toString(), toString(), toString(), toString(long, int)"
如果我可以选择将字段值日期转换为字符串而不更改我的实际映射类型,我会得到正确的值。所以请建议如何在弹性搜索查询中转换为字符串。 或者,如果有任何其他选项可以从日期中获取年份,那么也建议。
您收到的错误是因为字段值是 Long
而不是 String
。但是,您也可以像这样直接访问 date
值:
{
"query" : {
"match_all": {}
},
"script_fields" : {
"left_field" : {
"script" : {
"inline": "doc.timeModified.date.getYear()"
}
}
}
}
脚本很简单doc['timeModified'].date.year
。知道该字段的类型为 date
,ES 公开了 .date
快捷方式,其中可以使用 .year
之类的东西。