【问题标题】:Is it possible to match a document based on whether a document contains a set of objects?是否可以根据文档是否包含一组对象来匹配文档?
【发布时间】:2016-08-19 13:16:21
【问题描述】:

假设我有一个包含对象数组的根文档。 是否可以返回包含一组对象的文档?

例如:

文档 1

{
   "name": "someName"
   "date": "someDate"
   "anArray" : [
         {"key1": "value1", "key2":"value2"},
         {"key1": "value3", "key2":"value4"}...]
}

文档 2

{
   "name": "someOtherName"
   "date": "someOtherDate"
   "anArray" : [
         {"key1": "value1", "key2":"value2"}, 
         {"key1": "value4", "key2":"value3"}...]
}

我想要一个匹配并返回 Doc1 的查询:
在 anArray 中包含 key1 = value1 && key 2=value2 对象的文档,并且在 anArray 中也有 key1=value3 和 key2= value4 的对象

这可能吗?

【问题讨论】:

  • 如果没有,除了做客户端连接和过滤器之外,是否有关于如何处理这些类型的用例的任何建议。是否可以通过管道过滤器来解决这个问题?例如:首先检索一个包含 Object Key1 & key2 values 为 value 1 & value 2 的文档列表。然后从结果中过滤掉 Objects with Key1 & Key 2 = value3 & value 4
  • 这也不是嵌套对象查询。我不是要匹配 1。我要匹配多个。类似于:NEST1(match Key1,Key2,Value1,Value2) && NEST2(match key1,Key2,Value3,Value4)
  • 如果您尝试匹配数组中的多个对象,那么您必须为该数组使用nested 数据类型。
  • 我明白了,所以唯一的可能是这样做:即嵌套过滤器 1 -> 匹配“key1”、“value1”&&“key2”、“value2”。跟随嵌套过滤器 2 -> 匹配 "key1","value3", &&"key2","value4"
  • 酷,很高兴它有帮助!

标签: elasticsearch


【解决方案1】:

在外部查询上组合多个嵌套过滤器来实现这一点 - 正如 Val 所建议的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多