2015-03-25 18 views
7

Elastic Search 1.5.0'a yeni yükselttim ve şu ana kadar iç içe bir filtreyle birlikte çalışmamasına rağmen inner_hits'u yuvalanmış bir filtreyle çalışamıyorum.İç vuruşlar yuvalanmış filtre ile çalışmıyor mu?

ı bir film nesne içinde iç içe geçmiş nesne aktörleri almak istediğimizi varsayalım.

aşağıdaki iç içe sorgu çalıştırdığınızda:

Syntax'i 1

GET my_index/movie/_search 
{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "nested": { 
      "path": "actors", 
      "query": { 
      "match": { 
       "actors.id": 12345 
      } 
      }, 
      "inner_hits" : {} 
     } 
     } 
    } 
    } 
} 
=> Ben sadece iyi olan here belgelenmiş olarak inner_hits olsun.

Ama iç içe filtresi ile eşdeğer sorgu yapıyor deneyin zaman:

Dizimi 2

GET my_index/movie/_search 
{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "nested": { 
      "path": "actors", 
      "filter": { 
      "term": { 
       "actors.id": 12345 
      } 
      }, 
      "inner_hits" : {} 
     } 
     } 
    } 
    } 
} 

=> Aşağıdaki ayrıştırma hatayı

QueryParsingException [olsun [my_index] [iç içe], 'sorgu' veya 'filtre' alanı gerektirir]

(ve inner_hits kaldırdığınızda bu son sorgu çalışıyor - Ben iç hit alamadım tabii hariç ...)

kullandığım veya sözdiziminde yanlış bir şey var mı inner_hits henüz iç içe filtre ile uygulanmadı mı? peşin

Teşekkür

Düzenleme 3-30-2015

O @mdewit tarafından aşağıda belirtilen sözdizimi ile çalışır (teşekkürler!) 3

GET my_index/movie/_search 
{ 
    "query": { 
     "nested": { 
      "path": "actors", 
      "query": { 
       "filtered": { 
        "filter": { 
         "term": {"actors.id": 12345} 
        } 
       } 
      }, 
      "inner_hits" : {} 
     } 
    } 
} 

Syntax'i Bu sözdizimi

olsa bile Nested Filter doc

=> Ben hala sözdizimi 2'nin neyin yanlış olduğunu anlamıyorum. Bana bir ES hatası gibi görünüyor.

Düzenleme 2015/04/22: böcek ES 1.5.1 yılında sabit aşağıdaki

cevap

2

Bug ElasticSearch 1.5 giderilmiştir.1

here belirtildiği gibi Yani bu sözdizimi işleri (ve iyi çalışıyor)

GET my_index/movie/_search 
{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "nested": { 
      "path": "actors", 
      "filter": { 
      "term": { 
       "actors.id": 12345 
      } 
      }, 
      "inner_hits" : {} 
     } 
     } 
    } 
    } 
} 

teşekkürler çocuklar!

5

aşağıda benim yorumu görmek iş gibi görünüyor:

GET my_index/movie/_search 
{ 
    "query": { 
     "nested": { 
      "path": "actors", 
      "query": { 
       "filtered": { 
        "filter": { 
         "term": {"actors.id": 12345} 
        } 
       } 
      }, 
      "inner_hits" : {} 
     } 
    } 
}' 
+0

Evet, bunun için teşekkürler! Yine de, sağladığınız sözdizimi, resmi Nested Filter belgelerinde açıklandığı şekliyle soruyu açık bırakacağım: http://www.elastic.co/guide/en/elasticsearch/reference/1.x/ query-dsl-nested-filter.html Hala ben ES'den aldığım hata mesajında ​​bir hata var demektir – benoit

+0

Bu gerçekten çalışıyor .. –

İlgili konular