赞
踩
- 第一步:导入依赖
- <!--es缓存依赖-->
- <dependency>
- <groupId>org.elasticsearch.client</groupId>
- <artifactId>elasticsearch-rest-high-level-client</artifactId>
- </dependency>
-
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.83</version>
- </dependency>
-
- 第二步:创建文档需要的实体类
-
- package com.example.demousermanagement.beans;
-
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public class Products {
- private String id;
- private String type;
- private String name;
- private String desc;
- }
-
- 第三步:测试---创建索引、用分词器创建索引、添加单个文档、添加多个文档、查询
-
-
- @Slf4j
- @SpringBootTest
- class DemoUserManagementApplicationTests {
-
- //声明es客户端
- private RestHighLevelClient highLevelClient;
-
- public RestHighLevelClient restClient() {
- log.info("Elasticsearch init start ......");
- RestHighLevelClient restClient = null;
- try {
- final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
- credentialsProvider.setCredentials(AuthScope.ANY,
- new UsernamePasswordCredentials("elastic", "123456MQL"));
-
- SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
- // 信任所有
- public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- return true;
- }
- }).build();
- SSLIOSessionStrategy sessionStrategy = new SSLIOSessionStrategy(sslContext, NoopHostnameVerifier.INSTANCE);
- restClient = new RestHighLevelClient(
- RestClient.builder(
- new HttpHost("localhost", 9200, "https"))
- .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
- public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
- httpClientBuilder.disableAuthCaching();
- httpClientBuilder.setSSLStrategy(sessionStrategy);
- httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
- return httpClientBuilder;
- }
- }));
- } catch (Exception e) {
- log.error("elasticsearch TransportClient create error!!", e);
- }
- return restClient;
- }
-
- @BeforeEach
- void setUp(){
- //初始化客户端
- highLevelClient = restClient();
- }
-
- @AfterEach
- void tearDown() throws IOException {
- highLevelClient.close();
- }
-
- @Test
- void addIndex() throws IOException {
- //创建索引--相当于数据库
- CreateIndexRequest request = new CreateIndexRequest("products");
- final CreateIndexResponse createIndexResponse = highLevelClient.indices().create(request, RequestOptions.DEFAULT);
- log.info(createIndexResponse.toString());
- }
-
- /**
- * 使用ik分词器创建索引--相当于数据库
- */
- @Test
- public void testIK() throws IOException {
-
- String source = "{\n" +
- "\t\"mappings\": {\n" +
- "\t\t\"properties\": {\n" +
- "\t\t\t\"desc\": {\n" +
- "\t\t\t\t\"type\": \"text\",\n" +
- "\t\t\t\t\"fields\": {\n" +
- "\t\t\t\t\t\"keyword\": {\n" +
- "\t\t\t\t\t\t\"type\": \"keyword\",\n" +
- "\t\t\t\t\t\t\"ignore_above\": 256\n" +
- "\t\t\t\t\t}\n" +
- "\t\t\t\t}\n" +
- "\t\t\t},\n" +
- "\t\t\t\"id\": {\n" +
- "\t\t\t\t\"type\": \"long\"\n" +
- "\t\t\t},\n" +
- "\t\t\t\"name\": {\n" +
- "\t\t\t\t\"type\": \"text\",\n" +
- "\t\t\t\t\"fields\": {\n" +
- "\t\t\t\t\t\"keyword\": {\n" +
- "\t\t\t\t\t\t\"type\": \"keyword\",\n" +
- "\t\t\t\t\t\t\"ignore_above\": 256\n" +
- "\t\t\t\t\t}\n" +
- "\t\t\t\t}\n" +
- "\t\t\t},\n" +
- "\t\t\t\"type\": {\n" +
- "\t\t\t\t\"type\": \"text\",\n" +
- "\t\t\t\t\"fields\": {\n" +
- "\t\t\t\t\t\"keyword\": {\n" +
- "\t\t\t\t\t\t\"type\": \"keyword\",\n" +
- "\t\t\t\t\t\t\"ignore_above\": 256\n" +
- "\t\t\t\t\t}\n" +
- "\t\t\t\t}\n" +
- "\t\t\t}\n" +
- "\t\t}\n" +
- "\t}\n" +
- "}";
-
- //创建索引
- CreateIndexRequest request = new CreateIndexRequest("products");
-
- //给请求对象设置参数
- request.source(source, XContentType.JSON);
-
- final CreateIndexResponse createIndexResponse = highLevelClient.indices().create(request, RequestOptions.DEFAULT);
- log.info(createIndexResponse.toString());
- }
-
- /**
- * 创建文档--相当于添加单条表记录
- */
- @Test
- public void testDoc() throws IOException {
- try {
- IndexRequest request = new IndexRequest("products").id("9");
- String json = "{\n" +
- "\t\"name\": \"pear32\",\n" +
- "\t\"type\": \"9fruit9\",\n" +
- "\t\"desc\": \"good foot pear32\"\n" +
- "}";
- request.source(json, XContentType.JSON);
- final IndexResponse index = highLevelClient.index(request, RequestOptions.DEFAULT);
- log.info(index.toString());
- } catch (Exception e) {
- String msg = e.getMessage();
- if (!msg.contains("201 Created") && !msg.contains("200 OK")) {
- throw e;
- }
- }
- }
-
- /**
- * 批量添加文档--相当于批量添加表记录
- */
- @Test
- public void testBulk() throws IOException {
- try{
- List<Products> list = new ArrayList<>();
- list.add(new Products("3", "aaa", "bbb", "ccc"));
- list.add(new Products("4", "eee", "fff", "ggg"));
- list.add(new Products("5", "hhh", "ggg", "kkk"));
-
- //创建批量请求对象
- BulkRequest bulk = new BulkRequest();
- for (Products products : list) {
- IndexRequest request = new IndexRequest("products").id(products.getId());
- String json = JSON.toJSONString(products);
- request.source(json, XContentType.JSON);
- bulk.add(request);
- }
- highLevelClient.bulk(bulk, RequestOptions.DEFAULT);
- }catch (Exception e){
- String msg = e.getMessage();
- if (!msg.contains("201 Created") && !msg.contains("200 OK")) {
- throw e;
- }
- }
- }
-
- /**
- * 根据id查询文档
- */
- @Test
- public void testQueryDocById() throws IOException {
-
- GetRequest request = new GetRequest("products", "3");
- GetResponse documentFields = highLevelClient.get(request, RequestOptions.DEFAULT);
- String sourceAsString = documentFields.getSourceAsString();
- log.info("----" + sourceAsString);
- }
-
- /**
- * 跟俊其他条件查询
- */
- @Test
- public void testQueryDocByConditions() throws IOException {
- //获取条件对象
- SearchRequest request = new SearchRequest("products");
- //设置文档查询条件
- SearchSourceBuilder builder = new SearchSourceBuilder();
- builder.query(QueryBuilders.termQuery("type", "aaa"));
- request.source(builder);
-
- //执行查询
- SearchResponse response = highLevelClient.search(request, RequestOptions.DEFAULT);
- SearchHits hits = response.getHits();
- for (SearchHit hit : hits) {
- String sourceAsString = hit.getSourceAsString();
- Products products = JSON.parseObject(sourceAsString, Products.class);
- log.info(products.toString());
- }
-
- }
-
-
- }
-
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。