【发布时间】:2019-06-07 19:42:03
【问题描述】:
一直在思考如何做到这一点,但无法提出解决方案。希望堆栈可以提供帮助。
我有一个标识符(我们称之为对象 id - OID)是:
1) 用于跟踪交易链; 2) 不保证在 5 分钟间隔之外是唯一的。
在英语中“我想获取所有文档:(在时间 x 和 y 之间有 oid1 的数据)或(在时间 w 和 z 之间有 oid2 的数据)或 ....”
因为我正在处理大量数据(并且希望避免每个 OID 进行 1 次查询),所以我想做的是获取 OID 列表,为每个 OID 设置时间限制,然后查询 ES一次。我认为我能做的是:
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"oid": "12ac419512ac4195"
},
"range": {
"startTime": {
"from": "2019-01-04T21:31:00.000Z",
"to": "2019-01-04T21:34:00.000Z"
}
}
},
{
"match_phrase": {
"oid": "34df261834df2618"
},
"range": {
"startTime": {
"from": "2019-01-04T21:35:00.000Z",
"to": "2019-01-04T21:40:00.000Z"
}
}
}
],
"minimum_should_match": 1
}
}
}
只要我删除时间(“我想获取 oid1 或 oid2 或 oid2”),这工作正常,但时间范围似乎让 ES 不高兴。
有没有办法做到这一点?还是我坚持每个 OID 一个查询。
【问题讨论】:
-
在此处查看第二个示例 elastic.co/guide/en/elasticsearch/guide/current/… 在移动设备上无法格式化
标签: elasticsearch logstash kibana elastic-stack elasticsearch-5