目录
12.5 RestClient操作索引库
12.5.1创建库
12.5.2 删除索引库
12.5.3 判定是否存在
12.6 RestClient操作文档
12.6.1 新增文档
12.6.2 查询文档
12.6.3 修改文档
12.6.4 删除文档
12.6.5 批量导入文档
12.5 RestClient操作索引库
酒店mapping映射
-
-
- PUT /hotel
- {
- "mappings": {
- "properties": {
-
- "id": {
- "type": "keyword",
- "copy_to": "all"
- },
-
- "name": {
- "type": "text",
- "analyzer": "ik_max_word"
- },
-
- "address": {
- "type": "keyword",
- "index": false
- },
-
- "price": {
- "type": "integer"
- },
-
- "score": {
- "type": "integer"
- },
-
- "brand": {
- "type": "keyword",
- "copy_to": "all"
- },
-
- "city": {
- "type": "keyword"
- },
-
- "starName": {
- "type": "keyword"
- },
-
- "business": {
- "type": "keyword"
- },
-
- "location": {
- "type": "geo_point"
- },
-
- "pic": {
- "type": "keyword",
- "index": false
- },
-
- "all": {
- "type": "text",
- "analyzer": "ik_max_word"
- }
-
- }
- }
- }
复制代码 导入依赖
-
- <!--elasticSearch依赖-->
- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>elasticsearch-rest-high-level-client</artifactId>
- <version>7.12.1</version>
- </dependency>
复制代码
-
- <properties>
- <java.version>1.8</java.version>
- <elasticsearch.version>7.12.1</elasticsearch.version>
- </properties>
复制代码
创建对象
-
- @SpringBootTest
- class HotelIndexTest {
- private RestHighLevelClient client;
-
- // 客户端初始化
- @BeforeEach
- void setUp(){
- this.client = new RestHighLevelClient(RestClient.builder(
- HttpHost.create("http://192.168.142.129:9200")
- ));
- }
-
- @Test
- void tetsInit(){
- System.out.println(client);
- }
-
- // 客户端销毁
- @AfterEach
- void tearDown() throws IOException {
- this.client.close();
- }
-
- }
复制代码 client.indices()包罗了操作索引库的全部方法
12.5.1创建库
-
- @Test
- void testCreateHotelIndex() throws IOException {
- // 1. 创建Request对象
- CreateIndexRequest request = new CreateIndexRequest("hotel");
- // 2. 准备请求的参数
- request.source(MAPPING_TEMPLATE,XContentType.JSON);
- // 3. 发送请求 client.indices()的返回值包含了索引库额所有操作
- client.indices().create(request,RequestOptions.DEFAULT);
- }
复制代码 MAPPING_TEMPLATE是自界说的常量,也就是上面创建索引库的语句
12.5.2 删除索引库
-
- @Test
- void testDeleteIndex() throws IOException {
- // 1. 创建request对象
- DeleteIndexRequest request = new DeleteIndexRequest("hotel");
- // 2. 发送请求
- client.indices().delete(request,RequestOptions.DEFAULT);
- }
复制代码 12.5.3 判定是否存在
-
- @Test
- void testExistIndex() throws IOException {
- // 1. 创建request对象
- GetIndexRequest request = new GetIndexRequest("hotel");
- // 2. 发送请求
- boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
- // 3. 输出
- System.out.println(exists ? "索引库存在" : "索引库不存在");
- }
复制代码 12.6 RestClient操作文档
12.6.1 新增文档
-
- @Test
- void testIndexDocument() throws IOException {
- // 在数据库查到数据
- Hotel hotel = iHotelService.getById(61083L);
- HotelDoc hotelDoc = new HotelDoc(hotel); // 经度 + 纬度 拼接之后的对象 ,即索引库需要的类型
- // 1. 创建请求对象
- IndexRequest request = new IndexRequest("hotel").id(hotel.getId().toString());
- // 2. 准备json文档 把查到的对象转换成json对象
- request.source(JSON.toJSONString(hotelDoc),XContentType.JSON);
- // 3. 发送请求
- client.index(request,RequestOptions.DEFAULT);
- }
复制代码 12.6.2 查询文档
-
- @Test
- void testGetDocumentById() throws IOException {
- // 1. 准备request
- GetRequest request = new GetRequest("hotel", "61083");
- // 2. 发送请求
- GetResponse response = client.get(request, RequestOptions.DEFAULT);
- // 3. 从响应中解析对象
- String json = response.getSourceAsString();
- // 4. 把json转成HotelDoc对象
- HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
- System.out.println(hotelDoc);
- }
复制代码 12.6.3 修改文档
第二种更新方式,即局部更新的代码 :
-
- @Test
- void testUpdateDocumentById() throws IOException {
- // 1. 准备Request
- UpdateRequest request = new UpdateRequest("hotel", "61083");
- // 2. 准备请求参数
- request.doc(
- "age", 18,
- "name","Rose"
- );
- // 3. 发送请求
- client.update(request,RequestOptions.DEFAULT);
- }
复制代码 12.6.4 删除文档
-
- @Test
- void testDeleteDocumentById() throws IOException {
- // 1. 准备request
- DeleteRequest request = new DeleteRequest("hotel","61083");
- // 2. 发送请求
- client.delete(request,RequestOptions.DEFAULT);
- }
复制代码 12.6.5 批量导入文档
-
- @Test
- void testBulk() throws IOException {
- // 批量查询酒店数据
- List<Hotel> hotels = iHotelService.list();
- // 1. 创建Bulk请求
- BulkRequest request = new BulkRequest();
- // 2. 准备参数 添加多个新增的request
- for (Hotel hotel : hotels) {
- // 把hotel转成hotelDoc对象
- HotelDoc hotelDoc = new HotelDoc(hotel);
- request.add(
- new IndexRequest("hotel").id(hotelDoc.getId().toString())
- .source(JSON.toJSONString(hotelDoc),XContentType.JSON)
- );
- }
-
- // 3. 发送请求
- client.bulk(request,RequestOptions.DEFAULT);
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |