ElasticSearch Java Api(一) -创建索引
生活随笔
收集整理的這篇文章主要介紹了
ElasticSearch Java Api(一) -创建索引
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ElasticSearch Java API官網文檔:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-index.html
一、生成JSON
創建索引的第一步是要把對象轉換為JSON字符串.官網給出了四種創建JSON文檔的方法:
1.1手寫方式生成
String json = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}";手寫方式很簡單,但是要注意日期格式:Date Formate
1.2使用集合
集合是key:value數據類型,可以代表json結構.
Map<String, Object> json = new HashMap<String, Object>(); json.put("user","kimchy"); json.put("postDate",new Date()); json.put("message","trying out Elasticsearch");1.3使用JACKSON序列化
ElasticSearch已經使用了jackson,可以直接使用它把javabean轉為json.
// instance a json mapper ObjectMapper mapper = new ObjectMapper(); // create once, reuse// generate json byte[] json = mapper.writeValueAsBytes(yourbeaninstance);1.4使用ElasticSearch 幫助類
import static org.elasticsearch.common.xcontent.XContentFactory.*;XContentBuilder builder = jsonBuilder().startObject().field("user", "kimchy").field("postDate", new Date()).field("message", "trying out Elasticsearch").endObject()String json = builder.string();二、創建索引
下面的例子把json文檔寫入所以,索引庫名為twitter、類型為tweet,id為1:
import static org.elasticsearch.common.xcontent.XContentFactory.*;IndexResponse response = client.prepareIndex("twitter", "tweet", "1").setSource(jsonBuilder().startObject().field("user", "kimchy").field("postDate", new Date()).field("message", "trying out Elasticsearch").endObject()).get();也可以直接傳人JSON字符串:
String json = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}";IndexResponse response = client.prepareIndex("twitter", "tweet").setSource(json).get();更簡單的可以直接System.out.println(response)查看返回信息.
三、java實現
新建一個Java項目,導入elasticsearch-2.3.3/lib目錄下的jar文件.新建一個Blog類:
public class Blog {private Integer id;private String title;private String posttime;private String content;public Blog() {}public Blog(Integer id, String title, String posttime, String content) {this.id = id;this.title = title;this.posttime = posttime;this.content = content;}//setter and getter }創建java實體類轉json工具類:
import java.io.IOException;import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory;public class JsonUtil {// Java實體對象轉json對象public static String model2Json(Blog blog) {String jsonData = null;try {XContentBuilder jsonBuild = XContentFactory.jsonBuilder();jsonBuild.startObject().field("id", blog.getId()).field("title", blog.getTitle()).field("posttime", blog.getPosttime()).field("content",blog.getContent()).endObject();jsonData = jsonBuild.string();//System.out.println(jsonData);} catch (IOException e) {e.printStackTrace();}return jsonData;}}添加數據,返回一個list:
import java.util.ArrayList; import java.util.Date; import java.util.List;public class DataFactory {public static DataFactory dataFactory = new DataFactory();private DataFactory() {}public DataFactory getInstance() {return dataFactory;}public static List<String> getInitJsonData() {List<String> list = new ArrayList<String>();String data1 = JsonUtil.model2Json(new Blog(1, "git簡介", "2016-06-19", "SVN與Git最主要的區別..."));String data2 = JsonUtil.model2Json(new Blog(2, "Java中泛型的介紹與簡單使用", "2016-06-19", "學習目標 掌握泛型的產生意義..."));String data3 = JsonUtil.model2Json(new Blog(3, "SQL基本操作", "2016-06-19", "基本操作:CRUD ..."));String data4 = JsonUtil.model2Json(new Blog(4, "Hibernate框架基礎", "2016-06-19", "Hibernate框架基礎..."));String data5 = JsonUtil.model2Json(new Blog(5, "Shell基本知識", "2016-06-19", "Shell是什么..."));list.add(data1);list.add(data2);list.add(data3);list.add(data4);list.add(data5);return list;}}創建索引、添加數據:
import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Date; import java.util.List;import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentBuilder;import cn.com.bropen.entity.DataFactory; import static org.elasticsearch.common.xcontent.XContentFactory.*;public class ElasticSearchHandler {public static void main(String[] args) {try {/* 創建客戶端 */// client startupClient client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));List<String> jsonData = DataFactory.getInitJsonData();for (int i = 0; i < jsonData.size(); i++) {IndexResponse response = client.prepareIndex("blog", "article").setSource(jsonData.get(i)).get();if (response.isCreated()) {System.out.println("創建成功!");}}client.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}- 40
查看插入的數據:
總結
以上是生活随笔為你收集整理的ElasticSearch Java Api(一) -创建索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Elasticsearch文档的CRUD
- 下一篇: eclipse配置maven + 创建m