微服务ES2(使用RestClient操作)


PUT /hotel
{
  "mappings": {
    "id":{
      "type": "keyword"
    },
    "name":{
      "type": "text",
      "analyzer":"ik_max_word",
      "copy_to":"all"
    },
    "address":{
      "type":"keyword",
      "index":false
    },
    "price":{
      "type":"integer"
    }
    "score":{
      "type":"integer"
    },
    "brand":{
      "type":"integer",
      "copy_to":"all"
    },
    "city":{
      "type":"keyword"
    },
    "startName":{
      "type": "keyword"
    },
    "business":{
      "type": "keyword",
      "copy_to":"all"
    },
    "location":{
      "type": "geo_point"
    },
    "pic":{
      "type":"keyword",
      "index":false
    },
    "all":{
      
    }
  }
}



这里的all,可用于搜索。搜索一个all字段可用来搜索“name” "brand" "business"这3个字段

微服务ES2(使用RestClient操作)_第1张图片

微服务ES2(使用RestClient操作)_第2张图片 小知识:覆盖默认的elasticsearch的配置


1.建立索引库 

package cn.itcast.hotel;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.io.IOException;

import static cn.itcast.hotel.constants.HotelConstants.MAPPING_TEMPLATE;

public class HotelIndexTest {
    private RestHighLevelClient client;
    @Test
    void testInit(){
        System.out.println(client);
    }
    @BeforeEach
    void setUp(){
        this.client = new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://192.168.154.160:9200")
        ));
    }
    @AfterEach
    void tearDoen() throws IOException {
        this.client.close();
    }
    @Test
    void createHotelIndex() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest("hotel");
        request.source(MAPPING_TEMPLATE, XContentType.JSON);
        client.indices().create(request, RequestOptions.DEFAULT);
    }
}

微服务ES2(使用RestClient操作)_第3张图片

2.操作文档

新增文档

微服务ES2(使用RestClient操作)_第4张图片

    @Test
    void testAddDocument() throws IOException {
        Hotel hotel = hotelService.getById(61083L);
        HotelDoc hotelDoc = new HotelDoc(hotel);

        IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());
        request.source(JSON.toJSONString(hotelDoc),XContentType.JSON);
        client.index(request,RequestOptions.DEFAULT);
    }

查询文档

微服务ES2(使用RestClient操作)_第5张图片

    @Test
    void testGetDocument() throws IOException {
        // 1.准备Request
        GetRequest request = new GetRequest("hotel", "61082");
        // 2.发送请求,得到响应
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        // 3.解析响应结果
        String json = response.getSourceAsString();

        HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
        System.out.println(hotelDoc);
    }

更新文档

微服务ES2(使用RestClient操作)_第6张图片

@Test
void testUpdateDocument() throws IOException {
    // 1.准备Request
    UpdateRequest request = new UpdateRequest("hotel", "61083");
    // 2.准备请求参数
    request.doc(
        "price", "952",
        "starName", "四钻"
    );
    // 3.发送请求
    client.update(request, RequestOptions.DEFAULT);
}

 删除文档

@Test
void testDeleteDocument() throws IOException {
    // 1.准备Request
    DeleteRequest request = new DeleteRequest("hotel", "61083");
    // 2.发送请求
    client.delete(request, RequestOptions.DEFAULT);
}

批量导入数据到ES(Bulk处理):

@Test
    void testBulkRequest() throws IOException {
        // 批量查询酒店数据
        List hotels = hotelService.list();

        // 1.创建Request
        BulkRequest request = new BulkRequest();
        // 2.准备参数,添加多个新增的Request
        for (Hotel hotel : hotels) {
            // 2.1.转换为文档类型HotelDoc
            HotelDoc hotelDoc = new HotelDoc(hotel);
            // 2.2.创建新增文档的Request对象
            request.add(new IndexRequest("hotel")
                    .id(hotelDoc.getId().toString())
                    .source(JSON.toJSONString(hotelDoc), XContentType.JSON));
        }
        // 3.发送请求
        client.bulk(request, RequestOptions.DEFAULT);
    }

微服务ES2(使用RestClient操作)_第7张图片

你可能感兴趣的:(java,服务器,前端)