elasticsearch的操作(使用命令和使用程式碼)
---恢復內容開始---
在文章開始之前、先明確三個概念
1、索引
2、型別
3、文件
對比於資料庫中,索引就是一個數據庫、型別就是資料庫中的某張表、文件也就是表中具體的記錄。抽象點來看,索引抽象成一個人、人又分為男人和女人(就是型別)、然後男人有姓名、年齡、身高等(就是文件)。
使用postman進行操作
向es(elasticsearch,下面全部用es簡稱)傳送操作的請求是一個RestFui風格的,類似下面這種: http://<ip>:<port>/<索引>/<型別>/<文件id> 下面使用post向es傳送請求進行索引的建立
請求url:127.0.0.1:9200/people
請求入參:
{ "settings": { "index.number_of_shards":3, "index.number_of_replicas":1 }, "mappings": { "man": { "properties":{ "name":{ "type":"text" }, "height":{ "type":"text" }, "age":{ "type":"integer" } } } } }
上述的過程就是建立了一個索引為people、型別為man、型別中的properties有name、height、age這個欄位
響應引數:
{ "acknowledged": true, "shards_acknowledged": true }
插入資料有兩種方式:
第一種 指定id來插入:
請求url:127.0.0.1:9200/people/man/1 (1就是我們指定的id)
請求入參json串:
{ "name":"shuaige", "age" : 18, "height": "188cm" }
響應:
{ "_index": "people", "_type": "man", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "created": true }
自動生成id:
請求url:127.0.0.1:9200/people/man
請求入參:
{ "name":"laoshiren", "age" : 30, "height": "166cm" }
響應引數:
{ "_index": "people", "_type": "man", "_id": "AWXxFS1S66ULpPmE4hFv", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "created": true }
此時就建立了一個id為AWXxFS1S66ULpPmE4hFv的資料,其它的操作同理,都是像es發請求,只不過入參改改就可以
使用java程式碼進行操作
1、首先、構建一個springboot'工程、引入es的依賴
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.5.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency>
新建一個配置檔案的類,初始化一個es的客戶端
@Configuration public class ElasticSearchClientConfig { @Bean public TransportClient client() throws Exception { InetSocketTransportAddress node = new InetSocketTransportAddress(InetAddress.getByName("localhost"),9300);//tcp埠是9300 Settings settings = Settings.builder().put("cluster.name","sanxiongdi").build(); TransportClient client = new PreBuiltTransportClient(settings); client.addTransportAddress(node); return client; } }
最後在一個controller裡面對es進行操作
首先注入初始化es客戶端:
@Autowired private TransportClient client;
插入資料:
public ResponseEntity addBook(@RequestParam("name")String name, @RequestParam("height")String height,@RequestParam("age")int height){ try { XContentBuilder content = XContentFactory.jsonBuilder().startObject() .field("name",name) .field("height",height) .field("age",age) .endObject(); IndexResponse response = this.client.prepareIndex("person","man").setSource(content).get(); log.info("插入資料成功={}",response); return new ResponseEntity(response.getId(),HttpStatus.OK); }catch (Exception e){ log.error("插入資料異常={}", e); return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); } }
最後為方法配置路由去訪問就可以,其它的操作同理的。
程式碼的地址:ofollow,noindex" target="_blank">程式碼下載連線
---恢復內容結束---
在文章開始之前、先明確三個概念
1、索引
2、型別
3、文件
對比於資料庫中,索引就是一個數據庫、型別就是資料庫中的某張表、文件也就是表中具體的記錄。抽象點來看,索引抽象成一個人、人又分為男人和女人(就是型別)、然後男人有姓名、年齡、身高等(就是文件)。
使用postman進行操作
向es(elasticsearch,下面全部用es簡稱)傳送操作的請求是一個RestFui風格的,類似下面這種: http://<ip>:<port>/<索引>/<型別>/<文件id> 下面使用post向es傳送請求進行索引的建立
請求url:127.0.0.1:9200/people
請求入參:
{ "settings": { "index.number_of_shards":3, "index.number_of_replicas":1 }, "mappings": { "man": { "properties":{ "name":{ "type":"text" }, "height":{ "type":"text" }, "age":{ "type":"integer" } } } } }
上述的過程就是建立了一個索引為people、型別為man、型別中的properties有name、height、age這個欄位
響應引數:
{ "acknowledged": true, "shards_acknowledged": true }
插入資料有兩種方式:
第一種 指定id來插入:
請求url:127.0.0.1:9200/people/man/1 (1就是我們指定的id)
請求入參json串:
{ "name":"shuaige", "age" : 18, "height": "188cm" }
響應:
{ "_index": "people", "_type": "man", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "created": true }
自動生成id:
請求url:127.0.0.1:9200/people/man
請求入參:
{ "name":"laoshiren", "age" : 30, "height": "166cm" }
響應引數:
{ "_index": "people", "_type": "man", "_id": "AWXxFS1S66ULpPmE4hFv", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "created": true }
此時就建立了一個id為AWXxFS1S66ULpPmE4hFv的資料,其它的操作同理,都是像es發請求,只不過入參改改就可以
使用java程式碼進行操作
1、首先、構建一個springboot'工程、引入es的依賴
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.5.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency>
新建一個配置檔案的類,初始化一個es的客戶端
@Configuration public class ElasticSearchClientConfig { @Bean public TransportClient client() throws Exception { InetSocketTransportAddress node = new InetSocketTransportAddress(InetAddress.getByName("localhost"),9300);//tcp埠是9300 Settings settings = Settings.builder().put("cluster.name","sanxiongdi").build(); TransportClient client = new PreBuiltTransportClient(settings); client.addTransportAddress(node); return client; } }
最後在一個controller裡面對es進行操作
首先注入初始化es客戶端:
@Autowired private TransportClient client;
插入資料:
public ResponseEntity addBook(@RequestParam("name")String name, @RequestParam("height")String height,@RequestParam("age")int height){ try { XContentBuilder content = XContentFactory.jsonBuilder().startObject() .field("name",name) .field("height",height) .field("age",age) .endObject(); IndexResponse response = this.client.prepareIndex("person","man").setSource(content).get(); log.info("插入資料成功={}",response); return new ResponseEntity(response.getId(),HttpStatus.OK); }catch (Exception e){ log.error("插入資料異常={}", e); return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); } }
最後為方法配置路由去訪問就可以,其它的操作同理的。
程式碼的地址:程式碼下載連線