什么是ES索引?ES是Elasticsearch的縮寫,是基于Lucene構(gòu)建的開源搜索引擎。在ES中,數(shù)據(jù)都存儲在一個或多個索引中。索引是一個包含了文檔的集合,文檔是ES中處理的基本數(shù)據(jù)單元。每個文檔都是一個JSON格式的對象。
那么,如何解析JSON格式的文檔?
{ "name": "John", "age": 30, "city": "New York" }
以上是一個簡單的JSON文檔示例。在ES中,JSON文檔被解析為一個個字段,每個字段對應(yīng)著JSON文檔的一個鍵值對。
下面是一個使用ES Java庫中Index API進行索引的示例代碼:
import java.io.IOException; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.transport.client.PreBuiltTransportClient; public class IndexDemo { public static void main(String[] args) throws IOException { TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); XContentBuilder builder = XContentFactory.jsonBuilder().startObject() .field("name", "John") .field("age", 30) .field("city", "New York") .endObject(); IndexResponse response = client.prepareIndex("people", "man") .setSource(builder) .get(); String index = response.getIndex(); String id = response.getId(); long version = response.getVersion(); System.out.println("Index: " + index + ", ID: " + id + ", Version: " + version); client.close(); } }
在以上示例中,我們創(chuàng)建了一個包含"name"、"age"和"city"三個字段的文檔,然后我們利用client.prepareIndex方法設(shè)置了要索引的索引名稱"people"和類型"man",最后將JSON對象傳遞給setSource方法,并執(zhí)行g(shù)et方法來提交索引操作。
總之,在ES索引中,文檔是以JSON格式存儲的,而我們可以利用ES提供的API將JSON文檔存儲到索引中。