我有一个包含字段的索引:
我正在创建一个curl命令,其中可以获取使用房间的时间。
有可能吗?
这是当前的curl命令:
prov
这是结果:
chart.groupBars(0f, 0.8f, 0.1f)
但是我在“ 聚合”中的预期结果如下:
curl -XGET "https://localhost:9200/testindex/_search?pretty" -H 'Content-Type: application/json' -d'
{
"aggs": {
"room_bucket":{
"terms": {
"field": "room_name.keyword",
},
"aggs":{
"hour_bucket": {
"terms": {
"script": {
"inline": "def l = doc[\"start_date \"].value;\nif ( l <= 20 && l >= 9 ) {\n return l;\n}",
"lang": "painless"
},
"order": {
"_key": "asc"
},
"value_type": "long"
}
}
}
}
}
}'
在当前结果中,它仅读取开始日期。
但是,在预期的输出中, Room_V 应该具有“ key” = 11 ,“ key” = 12 ,“ key” = 13 (每个键的 doc_count 应该为1),因为基于开始日期和结束日期,会议室的使用时间为11-13。
答案 0 :(得分:1)
您可以通过利用LongStream
并创建间隔中所有小时数的数组来实现所需的目标,如下所示:
curl -XGET "https://localhost:9200/testindex/_search?pretty" -H 'Content-Type: application/json' -d'
{
"aggs": {
"room_bucket": {
"terms": {
"field": "room_name.keyword"
},
"aggs": {
"hour_bucket": {
"terms": {
"script": {
"inline": """
return LongStream.rangeClosed(doc.start_date.value, doc.end_date.value).toArray();
""",
"lang": "painless"
},
"order": {
"_key": "asc"
},
"value_type": "long"
}
}
}
}
}
}'