基于子文档过滤器的弹性搜索查询

时间:2016-04-15 22:26:39

标签: elasticsearch etl dsl

我正在一个小型的个人项目中工作,需要在ElasticSearch中进行一些查询,我想问你一些建议,因为我有点卡住了。

这是问题所在: 到目前为止,我有一个包含一个名为users的类型的索引。它存储由该用户完成的电子邮件和一系列事件。

{
   {
      email : account1@gmail.com
      events : [
            {
                 type: 'SOLVE PROBLEM'
                 date : 20160402
             }, 
            {
                 type: 'RESPOND QUESTION'
                 date : 20160402
             },
             {
                  type: 'ASK QUESTION'
                  date : 20160403
            },
             {
                 type: 'SOLVE PROBLEM'
                 date : 20160509
             },
             {
                 type: 'ASK QUESTION'
                 date : 20160402
             },
           ...

       ],
   },
   {
      email : account2@gmail.com
      events : [
            {
                 type:  'RESPOND QUESTION'
                 date : 20160402
             }, 
            {
                 type: 'RESPOND QUESTION'
                 date : 20160402
             },
             {
                  type: 'ASK QUESTION'
                  date : 20160402
            },
             {
                 type: 'SOLVE PROBLEM'
                 date : 20160402
             },
             {
                 type: 'ASK QUESTION'
                 date : 20160402
             },
           ...

       ],
   },
-....
}
.....

我想根据每个用户完成的事件数量进行查询,例如:

  • 将所有有"回复的用户(文档)退回给我#34;超过5个问题
  • 返回有"已解决"的所有用户2016-01-01和2016-02-04期间有4个问题
  • 返回所有提出少于4个问题的用户
  • 将所有有"回复的用户(文档)退回给我#34;超过5个问题并且已经解决了#34; 2016-01-01和2016-02-04期间有4个问题

价值来自一个方面。

我想问你是否可以给我一些关于我需要使用哪些过滤器/ aggs的建议,以便根据子文档中的元素数过滤文档。

因为我一直在阅读如何制作,但我还没能做到,甚至最糟糕的是,我不确定是否可能,因为我读到ES没有有像SQL

中的HAVING子句

感谢您提供任何帮助或建议。

0 个答案:

没有答案