• Elasticsearch----java操作ES


    项目创建

    添加依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
                <version>2.1.7.RELEASE</version>
            </dependency>
    <!--        <dependency>-->
    <!--            <groupId>org.elasticsearch</groupId>-->
    <!--            <artifactId>elasticsearch</artifactId>-->
    <!--            <version>6.2.1</version>-->
    <!--        </dependency>-->
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-high-level-client</artifactId>
                <version>6.2.1</version>
            </dependency>
    

    使用

    1、application配置

    xuecheng:
      elasticsearch:
        hostlist: ${eshostlist:127.0.0.1:9200} #多个结点中间用逗号分隔

    2、配置Elasticsearch

    • 使用一个client即可,我们使用restHighLevelClient
    @Configuration
    public class ElasticsearchConfig {
    
        @Value("${xuecheng.elasticsearch.hostlist}")
        private String hostlist;
    
        @SuppressWarnings("all")
        @Bean
        public RestHighLevelClient restHighLevelClient(){
            //解析hostlist配置信息
            String[] split = hostlist.split(",");
            //创建HttpHost数组,其中存放es主机和端口的配置信息
            HttpHost[] httpHostArray = new HttpHost[split.length];
            for(int i=0;i<split.length;i++){
                String item = split[i];
                httpHostArray[i] = new HttpHost(item.split(":")[0], Integer.parseInt(item.split(":")[1]), "http");
            }
            //创建RestHighLevelClient客户端
            return new RestHighLevelClient(RestClient.builder(httpHostArray));
        }
    
        //项目主要使用RestHighLevelClient,对于低级的客户端暂时不用
        @SuppressWarnings("all")
        @Bean
        public RestClient restClient(){
            //解析hostlist配置信息
            String[] split = hostlist.split(",");
            //创建HttpHost数组,其中存放es主机和端口的配置信息
            HttpHost[] httpHostArray = new HttpHost[split.length];
            for(int i=0;i<split.length;i++){
                String item = split[i];
                httpHostArray[i] = new HttpHost(item.split(":")[0], Integer.parseInt(item.split(":")[1]), "http");
            }
            return RestClient.builder(httpHostArray).build();
        }
    
    }

    3、测试

    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class TestIndex {
    
        @Autowired
        RestHighLevelClient client;
       
       //测试中没有使用restClient
        @Autowired
        RestClient restClient;
    
        //创建索引库
        @Test
        public void testCreateIndex() throws IOException {
            //创建索引对象
            CreateIndexRequest createIndexRequest = new CreateIndexRequest("xc_course");
            //设置参数
            createIndexRequest.settings(Settings.builder().put("number_of_shards", "1").put("number_of_replicas", "0"));
            //指定映射
            createIndexRequest.mapping("doc", "{
    " +
                    "    "properties": {
    " +
                    "        "name": {
    " +
                    "            "type": "text"
    " +
                    "        },
    " +
                    "        "description": {
    " +
                    "            "type": "text"
    " +
                    "        },
    " +
                    "        "studymodel": {
    " +
                    "            "type": "keyword"
    " +
                    "        },
    " +
                    "        "pic":{
    " +
                    "        	"type":"text"
    " +
                    "        }
    " +
                    "    }
    " +
                    "}", XContentType.JSON);
            //操作索引的客户端
            IndicesClient indices = client.indices();
            //执行创建索引库
            CreateIndexResponse createIndexResponse = indices.create(createIndexRequest);
            //得到响应
            boolean acknowledged = createIndexResponse.isAcknowledged();
            System.out.println(acknowledged);
        }
    
        //删除索引库
        @Test
        public void testDeleteIndex() throws IOException {
            //删除索引对象
            DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("xc_course");
            //操作索引的客户端
            IndicesClient indices = client.indices();
            //执行删除索引
            DeleteIndexResponse delete = indices.delete(deleteIndexRequest);
            //得到响应
            boolean acknowledged = delete.isAcknowledged();
            System.out.println(acknowledged);
    
        }
    
        //添加文档
        @Test
        public void testAddDoc() throws IOException {
            //文档内容
            //准备json数据
            Map<String, Object> jsonMap = new HashMap<>();
            jsonMap.put("name", "spring cloud实战");
            jsonMap.put("description", "本课程主要从四个章节进行讲解: 1.微服务架构入门 2.spring cloud 基础入门 3.实战Spring Boot 4.注册中心eureka。");
            jsonMap.put("studymodel", "201001");
            jsonMap.put("pic", "http://xx/xx/abd.png");
            //SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            //jsonMap.put("timestamp", dateFormat.format(new Date()));
            //创建索引创建对象
            IndexRequest indexRequest = new IndexRequest("xc_course", "doc");
            //文档内容
            indexRequest.source(jsonMap);
            //通过client进行http的请求
            IndexResponse indexResponse = client.index(indexRequest);
            DocWriteResponse.Result result = indexResponse.getResult();
            System.out.println(result);
    
        }
    
        //查询文档
        @Test
        public void testGetDoc() throws IOException {
            //查询请求对象
            GetRequest getRequest = new GetRequest("xc_course", "doc", "jxhqfW4B7IA_qgGLOu2z");
            GetResponse getResponse = client.get(getRequest);
            //得到文档的内容
            Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
            System.out.println(sourceAsMap);
        }
    
        //更新文档(局部更新)
        @Test
        public void updateDoc() throws IOException {
            UpdateRequest updateRequest = new UpdateRequest("xc_course", "doc", "jxhqfW4B7IA_qgGLOu2z");
            Map<String, String> map = new HashMap<>();
            map.put("name", "spring");
            updateRequest.doc(map);
            UpdateResponse update = client.update(updateRequest);
            RestStatus status = update.status();
            System.out.println(status);
        }
    
        //根据id删除文档
        @Test
        public void testDelDoc() throws IOException {
            //删除文档id
            String id = "jxhqfW4B7IA_qgGLOu2z";
            //删除索引请求对象
            DeleteRequest deleteRequest = new DeleteRequest("xc_course", "doc", id);
            //响应对象
            DeleteResponse deleteResponse = client.delete(deleteRequest);
            //获取响应结果
            DocWriteResponse.Result result = deleteResponse.getResult();
            System.out.println(result);
        }
    }
    

      

      

  • 相关阅读:
    Linux性能及调优指南(翻译)之Linux内存架构
    dtrace4linux
    perlchina2016 大会
    GO 语言圣经 -在线阅读
    dtrace4linux_Example
    hellogcc -100GDB技巧
    ITGEGE在线教育
    编译系统透视:图解编译原理
    C 高级编程5 IO与文件权限
    C 高级编程4 makefile 与 IO
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/11882596.html
Copyright © 2020-2023  润新知