2011-11-29 16 views
7

Misunderstanding Şöyle bir sorgu var:Sorgu DSL - filtrelerin

{ 
    "query": { 
    "constant_score": 
     "filter": { 
     "missing": { 
      "field": "parent_id" 
     } 
     } 
    } 
}, 
"size": limit, 
"from": offset 
} 

My tip bir parent_id ve wall_id alan var. Bu sorguyu, parent_id olmayan ve wall_id olmayan tüm türleri alabilmem için nasıl değiştirebilirim? Dokümanlardan deşifre edemiyorum. Sunulan herhangi bir yardım için teşekkürler!

GÜNCELLEME

ben çalışır aşağıdaki sorguyu var, ama başlığı CatchAll query sevmiyorum. Bir "CatchAll eklemek zorunda kalmadan bunu yapmanın bir yolu var mı Neredeyse geldin

{ 
    "query":{ 
    "filtered":{ 
    "query":{ 
     "field":{ "title":"*" } 
    }, 
    "filter":{ 
     "and":{ 
      "filters":[ 
       { 
       "missing":{ "field":"parent_id" } 
       }, 
       { 
       "missing":{ "field":"wall_id" } 
       } 
      ] 
     } 
    } 
    } 
}, "size":10, "from":0 
} 

cevap

7

, sadece constant_score sorgusu altında and filtre kullanmak gerekir:?

{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "and":[ 
      { "missing":{ "field":"parent_id" }}, 
      { "missing":{ "field":"wall_id" }} 
     ] 
     } 
    } 
    } 
} 
+0

Wow, bu harika şeyler. "filtre" özelliği etrafında kıvırcık parantez eklemek zorunda kaldım, ama işe yarıyor.Teşekkürler, BTW, bu format çok ince, elasticsearch.org docs bir kenara iyi bir belge kaynağı var mı? – swatkins

+0

Whoops, teşekkürler Bildiğim başka bir kaynak yok ama verdiğim bir sunum için slaytlara göz atmak isteyebilirsiniz: http://www.elasticsearch.org/tutorials/2011/08/28/ query-dsl-expla.html Ayrıca, ES ile konuştuğunuz müşteriyi de bilmiyorum, ancak Perl'i tanıyorsanız, daha kompakt bir Perl olan SearchBuilder'e bir göz atın. Standart ES sorgusuna dönüştürülen ish sözdizimi dsl: https://metacpan.org/module/ElasticSearch::SearchBuilder – DrTech

+0

node.js ve elasticsearchclient modülünü kullanıyorum. Bu harika bir yardım. Teşekkürler! – swatkins