在我們的應用程序中,我們經常需要存儲和加載JSON數據。Elasticsearch(以下簡稱ES)提供了一個非常方便的方式來存儲JSON字符串和操作它們。
ES將JSON數據存儲在文檔(Document)中。一個文檔可以看作是一條記錄,在ES中以JSON格式的字符串來表示。在ES中,一個文檔必須關聯到一個索引,這樣才能對其進行搜索和操作。電影庫索引下的某個文檔表示如下:
{ "_index": "movie_library", "_type": "movie", "_id": "1", "_score": 1.0, "_source": { "name": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "genre": ["drama", "crime"], "rating": 9.3 } }
可以看到,ES索引下的文檔是一個鍵值對的集合,其中鍵為_index、_type、_id等等。這些鍵用于唯一標識一個文檔并幫助我們定位它。_source字段存儲的是文檔的實際數據,以JSON格式存儲。
向ES中存儲JSON字符串非常簡單,只需要使用ES提供的API接口,在請求中添加JSON字符串即可。例如,我們可以使用ES提供的HttpClient庫,在Java中將一部電影存儲到電影庫索引中:
HttpClient client = HttpClientBuilder.create().build(); HttpPost post = new HttpPost("http://localhost:9200/movie_library/movie"); StringEntity entity = new StringEntity("{\"name\":\"The Shawshank Redemption\",\"director\":\"Frank Darabont\",\"year\":1994,\"genre\":[\"drama\",\"crime\"],\"rating\":9.3}", "UTF-8"); post.setEntity(entity); HttpResponse response = client.execute(post);
上述代碼中,我們使用了HttpPost請求將JSON數據存儲到ES中。注意,在創建請求時,我們指定了電影庫索引和文檔類型(即movie),并且將JSON數據作為實體添加到請求中。
當然,這只是一個示例,實際應用可能需要更加復雜的數據結構和索引設置。但是,以上代碼可以作為一個入門示例來快速了解如何將JSON字符串存儲到ES中。
上一篇python 是否是子類
下一篇材料Ui選擇行中的開口