2014-10-09 13 views
10

Jeśli chciałbym uzyskać wszystkie tokeny indeksu, który tworzy elasticsearch (używam rails elasticsearch gem), jak mam to zrobić? Robi coś takiego robi tylko określony zestaw żetonów dla szukanej frazy:Jak wydrukować odwrócony indeks utworzony przez elastyczne wyszukiwanie?

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

Nie ma api dostarczonych przez elasticsearch, aby wyświetlić wskaźnik lucene. Istnieje jednak kilka narzędzi, takich jak Luke, które pozwalają na przegląd indeksu lucene. Oto [blog] [1] o tym, jak skonfigurować go do elastycznego wyszukiwania prawdopodobnie może pomóc. [1]: http://rosssimpson.com/blog/2014/05/06/using-luke-with-elasticsearch/ – keety

+0

Dzięki udało mi się uzyskać Luke się i działa..na myśl, gdzie indeksy elastyczne wyszukiwanie tworzy są przechowywane w systemie Linux? Sprawdziłem /etc/init.d i nie widziałem żadnego pliku .idx. – Nona

+0

ścieżka indeksu powinna być podana w polu path.data w konfiguracji elasticsearch. indeksy powinny mieć ścieżkę podobną do /////indices/ – keety

Odpowiedz

1

można połączyć Scroll API z Term Vectors API aby wyliczyć warunki w odwróconym index:

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 

to raczej powolny i marnotrawstwo, ponieważ wykonuje żądanie HTTP _termvectors dla każdego dokumentu w indeksie, przechowuje wszystkie terminy w pamięci RAM i utrzymuje kontekst przewijania otwarty na czas wyliczania. Nie wymaga to jednak innego narzędzia, takiego jak Luke, a warunki mogą być przesyłane strumieniowo poza indeks.

Powiązane problemy