栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot整合ElasticSearch

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot整合ElasticSearch

1、需导入jar包

org.springframework.boot
spring-boot-starter-data-elasticsearch


com.alibaba
fastjson
1.2.70



org.projectlombok
lombok
true

2、编写配置类

@Configuration
public class ElasticSearchConfig {
    // 注册 rest高级客户端 
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1",9200,"http")
                )
        );
        return client;
    }
}
3、在service里面注入
@Autowired
public RestHighLevelClient restHighLevelClient;
4、索引操作 1)创建索引            
CreateIndexRequest request = new CreateIndexRequest("create_index");
CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
System.out.println(response.isAcknowledged());// 查看是否创建成功
System.out.println(response);// 查看返回对象
restHighLevelClient.close();
2)获取索引
GetIndexRequest request = new GetIndexRequest("create_index");
boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
3)删除索引
DeleteIndexRequest request = new DeleteIndexRequest("create_index");
AcknowledgedResponse response = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
5、文档操作    1)添加文档
// 创建一个User对象
User test= new User("test", 18);
// 创建请求
IndexRequest request = new IndexRequest("test");
// 制定规则 PUT /liuyou_index/_doc/1
request.id("1");// 设置文档ID
request.timeout(Timevalue.timevalueMillis(1000));// request.timeout("1s")
// 将我们的数据放入请求中
request.source(JSON.toJSonString(liuyou), XContentType.JSON);
// 客户端发送请求,获取响应的结果
IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println(response.status());// 获取建立索引的状态信息 CREATED
System.out.println(response);// 查看返回内容
   2)获取文档
GetRequest request = new GetRequest("test","1");
GetResponse response = restHighLevelClient.get(request, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsString());// 打印文档内容
   3)更新文档
UpdateRequest request = new UpdateRequest("test", "1");
User user = new User("test000",11);
request.doc(JSON.toJSonString(user),XContentType.JSON);
UpdateResponse response = restHighLevelClient.update(request, RequestOptions.DEFAULT);
System.out.println(response.status()); // OK
 4)文档删除
DeleteRequest request = new DeleteRequest("test", "1");
request.timeout("1s");
DeleteResponse response = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
System.out.println(response.status());// OK
 5)文档查询
// 1.创建查询请求对象
SearchRequest searchRequest = new SearchRequest();

// 2.构建搜索条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// (1)查询条件 使用QueryBuilders工具类创建
// 精确查询
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "test");
// // 匹配查询
// MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();


// (2)其他<可有可无>:(可以参考 SearchSourceBuilder 的字段部分)
// 设置高亮
searchSourceBuilder.highlighter(new HighlightBuilder());
// // 分页
// searchSourceBuilder.from();
// searchSourceBuilder.size();
searchSourceBuilder.timeout(new Timevalue(60, TimeUnit.SECONDS));
// (3)条件投入
searchSourceBuilder.query(termQueryBuilder);

// 3.添加条件到请求
searchRequest.source(searchSourceBuilder);

// 4.客户端查询请求
SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

// 5.查看返回结果
SearchHits hits = search.getHits();
System.out.println(JSON.toJSonString(hits));
System.out.println("=======================");
for (SearchHit documentFields : hits.getHits()) {
System.out.println(documentFields.getSourceAsMap());
}
6、批量增加数据
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");

ArrayList users = new ArrayList<>();
users.add(new User("liuyou-1",1));
users.add(new User("liuyou-2",2));
users.add(new User("liuyou-3",3));

// 批量请求处理
for (int i = 0; i < users.size(); i++) {
bulkRequest.add(
// 这里是数据信息
new IndexRequest("bulk")
.id(""+(i + 1)) // 没有设置id 会自定生成一个随机id
.source(JSON.toJSonString(users.get(i)),XContentType.JSON)
);
}

BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk.status());// ok

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489920.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号