Sie die Scroll API mit den Term Vectors API kombinieren können Begriffe im invertierten Index aufzählen:
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
Dies ist ziemlich langsam und verschwenderisch, da es eine HTTP-Anforderung _termvectors
für jedes einzelne Dokument im Index ausführt, alle Begriffe im RAM enthält und einen Bildlaufkontext für die Dauer der Aufzählung geöffnet hält. Dies erfordert jedoch kein anderes Tool wie Luke und die Begriffe können aus dem Index gestreamt werden.
Es gibt keine API von elasticsearch, um den Lucene-Index anzuzeigen. Allerdings gibt es einige Tools wie Luke, mit denen Sie den Lucene-Index anzeigen können. Hier ist ein [Blog] [1], wie man es für elasticsearch einrichten könnte wahrscheinlich helfen. [1]: http://rosssimpson.com/blog/2014/05/06/using-luke-with-elasticsearch/ – keety
Dank schaffte ich Luke und running..any Ahnung, wo der Indizes erhalten Elasticsearch erstellt werden unter Linux gespeichert? Ich habe /etc/init.d überprüft und keine .idx-Datei gefunden. – Nona
Indexpfad sollte im Feld path.data in der Konfiguration von elasticsearch angegeben werden. Die Indizes sollten in einem ähnlichen Pfad wie/////indices/ –
keety