Elasticsearchにデータを保存する方法について


#1

今、Javaからelasticsearchにデータを保存して、kibanaで表示するプログラムを作成しています。
プログラムから入力したデータはファイルに書き込んでいるのですが、
書き込んだファイルを使用してインデックスを生成する方法が分かりません。
教えてください。


(Norio Suzuki) #2

基本的には次の流れになるのではないでしょうか。

  1. プログラムでファイルを読み込む
  2. プログラムから Elasticsearch にデータを投げる

2 を実現するために、下記の URL にある各言語用のクライアントライブラリを使ってプログラムを書けば良いと思います。Java であれば、Java API ですね。

また、Embulk という OSS を使ってインポートすることもできます。Embulk の公式サイトに CSV ファイルから Elasticsearch へインポートするサンプルが掲載されていますので、参考にどうぞ。


#3

教えて頂いたサイトを参考にプログラムを組んでいるのですが
https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index-doc.html
このページの
IndexResponse response = client.prepareIndex("twitter", "tweet")
ってところで「メソッド prepareIndex(String, String) は型 Client で未定義です」というエラーが出て困っています。
たぶんimportが足りないせいだと思うのですが何が足りないのかが分かりません。
importはこんな感じです。
import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
import static org.elasticsearch.common.xcontent.XContentFactory.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.StringTokenizer;
import java.text.SimpleDateFormat;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.node.Node;

アドバイスお願いします。


(Norio Suzuki) #4

残念ながら私は Java API を使っていないので、これ以上のアドバイスはできそうにありません。

知識のある方のフォローが入るといいですね。


(Jun Ohtani) #5

バージョンはいくつを利用していますか?
あと、「client」という変数はどうやって定義していますか?


(system) #6