2014-10-09 5 views
10

Eğer elasticsearch'in yarattığı endeksin tüm belirteçleri almak istediysem (rails elasticsearch gem kullanıyorum), bunu nasıl yapacağım? Sen Term Vectors API ile Scroll API birleştirebilirsinizelasticsearch tarafından oluşturulan ters indeks nasıl yazdırılır?

curl -XGET 'http://localhost:9200/development_test/_analyze?text=John Smith' 
+2

luclast indeksini görüntülemek için elasticsearch tarafından sağlanan bir api yoktur. Ancak, Luke gibi lümen indeksini görmenize izin veren bazı araçlar var. İşte bir [blog] [1], elasticsearch için nasıl ayarlanacağına dair muhtemelen yardımcı olabilir. [1]: http://rosssimpson.com/blog/2014/05/06/using-luke-with-elasticsearch/ – keety

+0

Teşekkürler Luke'ı çalıştırmayı başardım .. indisleri elasticsearch nerede bir fikir Linux'ta yaratılan dosyalar? /etc/init.d adresini kontrol ettim ve herhangi bir .idx dosyası görmedim. Elasticsearch yapılandırmasında path.data alanında – Nona

+0

dizin yolu sağlanmalıdır. indisler, /////indices/ – keety

cevap

1

ters dizin terimleri numaralandırmak için:

require "elastomer/client" 
require "set" 

client = Elastomer::Client.new({ :url => "http://localhost:9200" }) 
index = "someindex" 
type = "sometype" 
field = "somefield" 

terms = Set.new 

client.scan(nil, :index => index, :type => type).each_document do |document| 
    term_vectors = client.index(index).docs(type).termvector({ :fields => field, :id => document["_id"] })["term_vectors"] 
    if term_vectors.key?(field) 
    term_vectors[field]["terms"].keys.each do |term| 
     unless terms.include?(term) 
     terms << term 
     puts(term) 
     end 
    end 
    end 
end 

Bu oldukça yavaş böyle yaparak şey sadece arama terimi için jeton belli bir set alır ve dizindeki her bir belge için bir _termvectors HTTP isteğini gerçekleştirdiğinden ve israfı tüm terimleri RAM içinde tuttuğundan ve numaralandırma süresi boyunca bir kaydırma bağlamını açık tuttuğundan savurganlık. Bununla birlikte, bu Luke gibi bir başka araç gerektirmez ve terimler endeksten çıkarılabilir.