下载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());
}
}