首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较来自按日期分区的不同索引的两个elasticsearch文档字段

比较来自按日期分区的不同索引的两个elasticsearch文档字段
EN

Stack Overflow用户
提问于 2019-03-22 02:26:04
回答 1查看 780关注 0票数 0

我使用以下简化的结构将数据按天分区(考虑数组中的对象是单独的文档)。实际文档数量将超过1000万:

/products-2019.01.01

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "Product1",
    "price": 15
  },
  {
    "id": 2,
    "name": "Product2",
    "price": 10
  },
  {
    "id": 3,
    "name": "Product3",
    "price": 10
  }
]

/products-2019.01.02

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "Product1",
    "price": 10
  },
  {
    "id": 2,
    "name": "Product2",
    "price": 12
  },
  {
    "id": 3,
    "name": "Product3",
    "price": 10
  }
]

/products-2019.01.03

代码语言:javascript
复制
[
  {
    "id": 1,
    "name": "Product1",
    "price": 10
  },
  {
    "id": 2,
    "name": "Product2",
    "price": 10
  },
  {
    "id": 3,
    "name": "Product3",
    "price": 13
  }
]

我的用例是,我需要比较两个确切日期之间的价格,在这种情况下,它可能是:

vs 2019.01.02

  • 2019.01.01 vs 2019.01.03

  • 2019.01.02 vs 2019.01.03
  • 2019.01.01

显然,每日数据越多,可能的组合就越多。

如果我必须比较2019.01.01和2019.01.03,查询必须返回2,因为产品1和产品3的价格在这两个索引之间是不同的。

我正在寻找帮助来构建这样的查询,并对任何其他数据模型建议持开放态度。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 06:52:54

我认为在这种情况下,您可以根据id和价格进行聚合,然后添加min_doc_count来过滤掉两个索引中不同的部分

代码语言:javascript
复制
GET logs1,logs2/_search
{
  "size": 0,
  "aggs": {
    "by_product": {
      "terms": {
        "script": {
          "inline": "doc.id+'_'+doc.price"
        },
        "min_doc_count": 2
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55286966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档