2012-08-31 24 views
6

İki farklı alanların kombinasyonu (Enlem ve Boylam)elastik arama çift faset

curl -XGET http://www.my_server:9200/idx_occurrence/Occurrence/_search?pretty=true -d '{ 
    "query": { 
     "query_string" : { 
      "fields" : ["genus_interpreted","dataset"], 
      "query": "Pica 2", 
      "default_operator" : "AND" 
     } 
    }, 
    "facets": { 
     "test": { 
      "terms": { 
       "fields" :["decimalLatitude","decimalLongitude"], 
       "size" : 500000000 
      } 
     } 
    } 
}' 

O ... herhangi beklenenden daha sonuçlarının çift sayı verir tarafından hangi grupların veri elastik bir arama sorgusu çalıştırmak istediğiniz Fikir? cevap daha buna ilişkin parçalarıdır

...

_shards":{ 
    "total":5, 
    "successful":5, 
    "failed":0 
}, 
"hits":{ 
    "total":**37**, 
    "max_score":3.9314494, 
    "hits":[{ 

toplam isabet, 37 ben yönleriyle geçerli değilse sorgunun sonucudur. Bu toplam yönleriyle toplamının yarısıdır

"facets":{ 
    "test":{ 
     "_type":"terms", 
     "missing":0, 
     "total":**74**, 
     "other":0, 
     "terms":[ 
      {"term":"167.21665954589844","count":5}, 
      {"term":"167.25","count":4}, 
      {"term":"167.14999389648438","count":4}, 
      {"term":"167.1041717529297","count":4}, 
      {"term":"-21.04166603088379","count":4},..... 

Yani, faset gruplama (boylama göre daha sonra enlem tarafından ve) ayrı ayrı yapılır (aşağıya bakınız).

Birden çok kayıt enlemi (ancak farklı boylam) veya viceversa'yı paylaşabileceğinden, yalnızca enlem veya boylam ile gruplayamadığımızı lütfen unutmayın.

+0

sizin olsun çıkış gösterebilir: Burada, bir deneyin yardımcı olmalıdır örneğidir? – CharlesB

+0

Soruyu gerçekten çözmediğimi düşünmüyorum cevapları kabul edemiyorum ... – user1249791

cevap

4

Birden çok alana bir TermsFacet hazırlıyorsunuz: enlem ve boylam. Bu, enlem ve boylamın benzersiz bir alan olduğu için birlikte toplandığı anlamına gelir. Her bir değer için bir enlem veya boylam olabilir. 74 girişi geri almanız, endeksinizde 74 farklı enlem ve boylam değerinizin bulunduğunu kanıtlar ki bu da mantıklıdır. Tam olarak ne elde etmek istiyorsun? Her enlem boylam çifti için bir faset girişi?

  • üzerinde faset sonra çifti kendisi ve içerdiği endekse İlave alan ekle
  • bir terim komut dosyası kullanarak anında latitue boylam çiftini oluşturun: Bu durumda iki seçenek var. Daha fazla bilgi için documentation'a bakın.
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tags" : { 
      "terms" : { 
       "field" : "latitude", 
       "script" : "term + \"_\" + _source.longitude" 
      } 
     } 
    } 
} 
+0

Tam olarak aynı konumu paylaşan tüm verileri (aynı enlem ve boylam) gruplandırmak istiyorum. Yeni bir alan eklemek biraz karmaşıktır, bu yüzden gruplama için bunu kullanarak enlem ve boylamı uçta birleştirmek istiyorum. facet benzeri ... "terms": {"alanlar": ["decimalLatitude", "decimalLongitude"], "script": "terim [1]", "size": 500 çalışır, başvurulan terim [1] decimalLongitude, ama ihtiyacım olan şey değil. Aslında, [0] terimi [1] terimine katılabilsem bile, bu dizindeki herhangi bir şeyle karşılaştırılamaz, bu yüzden onu nasıl alacağımı anlayamıyorum ... – user1249791

+0

Güncellenmiş yanıtıma bir bakın. – javanna

+0

tam olarak ihtiyacım olan şey, teşekkürler! – user1249791

İlgili konular