springboot整合elasticsearch实现增删改查

下载es

可以看一下我这篇文章下载安装es

整合项目

pom文件

<properties>
		<java.version>1.8</java.version>
		//自己的es版本 要跟下载的对应
		<elasticsearch.version>7.11.1</elasticsearch.version>
	</properties>
	<dependencies>
		<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		</dependencies>

配置一下这个bean

@Configuration
public class ESConfig {
    
    

    @Bean
    public RestHighLevelClient restHighLevelClient(){
    
    
        return new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));
    }
}

增删改查

	@Autowired
	private RestHighLevelClient restHighLevelClient;
//创建索引   索引可以先理解为库
@Test
	void contextLoads() throws IOException {
    
    
		CreateIndexRequest lytIndex = new CreateIndexRequest("xxx");
		CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(lytIndex, RequestOptions.DEFAULT);
		System.out.println(createIndexResponse);
	}
//判断索引是否存在
	@Test
	void testExist() throws IOException {
    
    
		GetIndexRequest getIndexRequest = new GetIndexRequest("xxx");
        System.out.println(restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT));
    }
    //删除索引
    @Test
    void delete() throws IOException {
    
    
        DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("xxx");
        System.out.println(restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT));
    }

操作数据

//在aaa的index里创建id为1的一条数据
 @Test
    void createDoc() throws IOException {
    
    
        User user = new User("xxx",21,"xxx");
        IndexResponse index = restHighLevelClient.index(new IndexRequest("aaa").id("1").source(JSON.toJSONString(user), XContentType.JSON), RequestOptions.DEFAULT);
        System.out.println(index);
    }
//获取aaa里id为1的数据
    @Test
    void get() throws IOException {
    
    
        GetRequest getRequest = new GetRequest("aaa","1");
        GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(documentFields.getSourceAsString());
    }
//批量插入数据
    @Test
    void bulk() throws IOException {
    
    
        BulkRequest bulkRequest = new BulkRequest();
        List<User> list = new ArrayList<>();
        list.add(new User("111",11,"111"));
        list.add(new User("222",22,"222"));
        for (User aList : list) {
    
    
            bulkRequest.add(new IndexRequest("aaa").source(JSON.toJSONString(aList),XContentType.JSON));
        }
        restHighLevelClient.bulk(bulkRequest,RequestOptions.DEFAULT);

    }
@Test
    void seach() throws IOException {
    
    
        SearchRequest searchRequest = new SearchRequest("lyt_111");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //查询所有
        MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
        //分词匹配查询
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "中国共产党");
        //精确查询 不会分词
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "中国共产党");
        //给定字段 在列中查符合的数据
        MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery("aaa", "args", "name");
        //根据给定id查询数据
        IdsQueryBuilder idsQueryBuilder = QueryBuilders.idsQuery().addIds("1", "2", "3");
        //范围查询
        RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("packingDate").gte("2019/10/16").lte("2020/12/16");
        //包含查询的值 包含通配符 * ?
        WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery("name", "中");
        //正则表达式查询
        RegexpQueryBuilder regexpQueryBuilder = QueryBuilders.regexpQuery("name", "aa*");

        searchSourceBuilder.query(regexpQueryBuilder);
        
        //分页
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(2);

        searchSourceBuilder.sort("_id");

        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        for (int i = 0; i < hits.getHits().length; i++) {
    
    
            System.out.println(hits.getHits()[i].getSourceAsString());
        }

    }

猜你喜欢

转载自blog.csdn.net/m0_48358308/article/details/115083934