2012-09-05 15 views
5

elasticsearch 0.19.9 ile çalışan çok yönlü sorgularım var.elasticsearch döndürülen yönlerin sayısı

{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "all_terms" : true 
      } 
     } 
    } 

} Anlıyorum gibi

, bu beni tüm vermelidir: Ancak ben mümkün olmalıdır belgelere göre sayımını> 0.

olan tüm yönleriyle dönmek istiyorum sayım 0 olsa bile, yüzler yine de bu, sadece en iyi 10 yönü sayılarak geri dönmektedir. Varsayılan boyut hangisidir. Geri dönen yönlerin sayısını etkiliyor gibi görünen tek şey, ayarlanarak, N öğesinin döndürülecek yönlerin sayısıdır.

Bunu gerçekten yüksek bir sayıya ayarlayabilirim, ancak bu sadece hack-ish gibi görünüyor.

Neyi yanlış yaptığım konusunda bir fikrim var mı?

cevap

4

Yanlış bir şey yapmıyorsunuz. Doğru anladın! Github üzerinde open issue,ile benzer terimler oluşturmak için, tüm terimleri geri almak için size = 0 değerini ayarlamanıza olanak tanır. Şimdilik sadece yüksek bir değer kullanmanız gerekiyor, bu biraz zor, katılıyorum. Öte yandan, çok fazla giriş yapmamaya dikkat edin!

+1

Geri bildiriminiz için teşekkürler ... Duymak istediklerim olmasa da. –

+0

Bence genel soru, bir terim facet yaptıktan sonra, 0'dan büyük bir sayıya sahip olan terimleri> 0 olan terimlerin nasıl filtreleneceğidir. Faset terimleri sayım verir, ancak sayıları da filtrelemek isteriz. –

3
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "size" : 2147483647, 
       "all_terms" : false 
      } 
     } 
    } 
} 

"saymak: 0" kaldırmak için tek yol yanlış olarak "all_terms" koymaktır, ve Elasticsearch durumda başarı boyutu numarası gibi yüksek ve mümkün olduğunca imkansız set (örnek üstündedir PHP'de bir tamsayıya sahip olabileceğiniz en büyük imzalanmış değer.

Bu en iyi yol olmayabilir, ancak bu şimdiye kadar bilinen tek yaklaşımdır. Faset filtresi şu anda bununla çalışmaz (yapmak için Elasticsearch'i güncellemedikleri ve geliştirmedikleri sürece).

+1

Çok fazla terim yok. Bu yaklaşım benim için gayet iyi çalıştı. Arama sonuçları yeterince hızlıydı. Teşekkürler! – anbiniyar