今、Javaからelasticsearchにデータを保存して、kibanaで表示するプログラムを作成しています。
プログラムから入力したデータはファイルに書き込んでいるのですが、
書き込んだファイルを使用してインデックスを生成する方法が分かりません。
教えてください。
基本的には次の流れになるのではないでしょうか。
- プログラムでファイルを読み込む
- プログラムから Elasticsearch にデータを投げる
2 を実現するために、下記の URL にある各言語用のクライアントライブラリを使ってプログラムを書けば良いと思います。Java であれば、Java API ですね。
- Elasticsearch Clients
また、Embulk という OSS を使ってインポートすることもできます。Embulk の公式サイトに CSV ファイルから Elasticsearch へインポートするサンプルが掲載されていますので、参考にどうぞ。
- Scheduled bulk data loading to Elasticsearch + Kibana 4 from CSV files
教えて頂いたサイトを参考にプログラムを組んでいるのですが
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;
アドバイスお願いします。
残念ながら私は Java API を使っていないので、これ以上のアドバイスはできそうにありません。
知識のある方のフォローが入るといいですね。
バージョンはいくつを利用していますか?
あと、「client」という変数はどうやって定義していますか?