如何从弹性搜索中获取最后30分钟的记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从弹性搜索中获取最后30分钟的记录相关的知识,希望对你有一定的参考价值。
I am using following query to fetch all last 30 minutes records using elastic search, but I'm getting parsable error on line "now-30m".
Query:
{
"query": {
"bool": {
"must": [
{
"match": {
"appName": "magnus-alerting-system"
}
},
{
"match": {
"countryCode": "US2"
}
},
{
"match": {
"eventCode": 201
}
},
{
"match": {
"extractName": "LaborDemand"
}
},{
"range": {
"eventPostTimestamp": {
**"gte": "now()-30m"**
}
}
}
]
}
}
}
邮递员在执行服务时出错:“root_cause”:[{“type”:“number_format_exception”,“reason”:“输入字符串:”now() - 30m “”}]
让我知道如何纠正它。
答案
原因是因为now() - 在弹性搜索中30米是错误的,因为正确的格式只是“现在”。 Documentation
因此,正确的查询如下:
{
"query": {
"bool": {
"must": [
{
"match": {
"appName": "magnus-alerting-system"
}
},
{
"match": {
"countryCode": "US2"
}
},
{
"match": {
"eventCode": 201
}
},
{
"match": {
"extractName": "LaborDemand"
}
},{
"range": {
"eventPostTimestamp": {
"gte": "now-30m"
}
}
}
]
}
}
}
另一答案
在data math中使用range query for date field的正确语法如下:
{
"range": {
"eventPostTimestamp": {
"gte": "now-30m"
}
}
}
以上是关于如何从弹性搜索中获取最后30分钟的记录的主要内容,如果未能解决你的问题,请参考以下文章