2013-05-30 21 views
5

ES'de iç içe geçmiş belgeleri kullanıyorum. Bir varlığın içinde yuvalanmış dizilim var ve iç içe geçmiş sorgu ile diziyi filtrelemek istiyorum (yalnızca filtre kök/parent doc değil, aynı zamanda yuvalanmış dizi de değil).Yuvalanmış diziyi yanıt olarak filtreleme?

Yuvalanmış filtreler, kök dokümanı filtrelemeyi sağlar. Örneğin, 'blog'larım' dizinine sahipseniz ve 'blog'u' yazıyorsanız ve blog belgesinin içinde {"type": "nested"} ile eşlemelerde 'comment' (yorum dizisi) var, örneğin 'günümüze' (örneğin, sorguyla birlikte) gibi bir yorumu olan blog'ları filtrelemek için, ancak her blogda yalnızca 'bugün' kelimesini içeren yorumları göstermek istiyorum.

Yuvalı filtre işlerinin nasıl yapıldığını biliyorum. Ayrıca, çocuk-ebeveyn ilişkisi bu amaç için iyi değildir çünkü ana belgenin bir parçası olarak yanıt olarak hiçbir çocuk belgesi yoktur.

Performansı etkileyebilecek, uygulamaya ek mantık eklemeden elasticsearch'te bunu doğrudan yapmanın bir yolu var mı? Yoksa var mıdır ve bunu sonraki sürümlerde iç içe geçmiş sorgu/filtre içinde yeni bir seçenek olarak eklemeyi mi planlıyorsunuz? bloglar tarafından

filtresi:

 
..... 
"blogs" :[ 
    { 
     "id":1000, 
     "content":"hello world!!!", 
     "author:"evan", 
     "createTime":"2013-05-31", 
      "comments" : [ 
        {"author":"jack", id:"1", "content":"test test","createTime":"2013-05-31"}, 
        {"author":"tom", id:"2", "content":"test test","createTime":"2013-05-30"}, 
        {"author":"oliver", id:"3", "content":"test test","createTime":"2013-05-30"}, 
        {"author":"Jonesie", id:"4", "content":"test test","createTime":"2013-05-29"} 
      ] 
    }, 
    { 
     "id":1001, 
     "content":"test data", 
     "author:"jack", 
     "createTime":"2013-05-30", 
      "comments" : [ 
        {"author":"Zach", id:"11", "content":"test data 1","createTime":"2013-05-31"}, 
        {"author":"tom", id:"21", "content":"test data 2","createTime":"2013-05-31"}, 
        {"author":"oliver", id:"31", "content":"test test 3","createTime":"2013-05-28"}, 
        {"author":"Jonesie", id:"41", "content":"test test 4","createTime":"2013-05-27"} 
      ] 
    } 
] 
..... 

ben gibi sorgu çalıştırmak istiyorum:

Teşekkür

... Mesela

ekleyin bu dokümana bakabilirsiniz. createTime == '2013-05-31' ve filters.comments.createTime == '2013-05-31' yi filtreleyin.

bekliyoruz:

 
..... 
"blogs" :[ 
    { 
     "id":1000 
     "content":"hello world!!!", 
     "author::"evan", 
     "createTime":"2013-05-31" 
      "comments" : [ 
        {"author":"jack", id:"1", "content":"test test","createTime":"2013-05-31"} 
      ] 
    } 
] 
.... 

sayesinde Kısacası

+1

Sorunuza bazı test verileri ekleyebilir misiniz? Veri yapınızın nasıl göründüğü oldukça açık değil. – imotov

cevap

İlgili konular