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.
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
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
ścieżka indeksu powinna być podana w polu path.data w konfiguracji elasticsearch. indeksy powinny mieć ścieżkę podobną do/////indices/ –
keety