2012-02-01 108 views
2

我在使用elasticsearch时遇到了一些问题,并想知道是否有人可以帮我解决这个问题。ElasticSearch,如何搜索包含特定数组元素的文档

我有一个包含元组(数组)的文档(出版物)。

喜欢的东西:

{ 
     .... 

     publications: [ 
     { 
      item1: 385294, 
      item2: 11 
     }, 
     { 
      item1: 395078, 
      item2: 1 
     } 
     ] 

     .... 
    } 

我的问题是谁检索包含特定的元组文件,对于为例(ITEM1 = 395078和ITEM2 = 1)。

无论我尝试,它似乎总是把物品1和项目2分开,我不能告诉elasticsearch该物品1和ITEM2必须具有相同的元组内的特定值,而不是进行的跨整个阵列...

是有什么我在这里失踪?

谢谢

回答

2

这是不可能的直接方式。 ElasticSearch在检查条件之前将数组变平。 这意味着 elasticSearch匹配 a = x和b = y1到[{a = x,b = y},{a = x1,b = y1}]这不会发生在常规数组检查中。

,你可以在这里做什么是嵌套类型的

+0

谢谢,明天我会看看嵌套类型。还有一个问题,如果这样的商店出版物:出版物:[{385294:11},{395078:1}]它如何帮助我查询? – 2012-02-01 21:55:22

+0

如果前面有item1的值,则可以查询数组中的值385294。它会给出11。 – 2012-02-02 06:17:11

相关问题