IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> window 搭建elasticsearch -> 正文阅读

[大数据]window 搭建elasticsearch

环境准备

  • 安装包下载地址:
    https://pan.baidu.com/s/16JuTiH-wOXqKoSgAPYUbFA
    提取码: tqs2

搭建步骤

1. 安装elasticsearch

开启后不要关闭dos窗口

  • 解压缩el 安装包

  • 启动 elasticsearch-> 双击 D:\java\elasticsearch-6.2.2\bin\elasticsearch.bat

2. 安装kibana

开启后不要关闭dos窗口

  • 解压缩kibana

  • 运行kibana -> D:\java\kibana-6.2.2-windows-x86_64\bin\kibana.bat

  • 访问路径: http://localhost:5601

3. 创建项目测试

注: 利用
项目树目录:
在这里插入图片描述

  • maven 依赖包

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.1.11.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
  • 配置文件 -> application.yml

    elasticsearch:
    	  cluster:
    	    name: elasticsearch
    	  ip: localhost
    	  port: 9300
    	  pool: 5
    
  • springboot config装配类 -> ElasticSearchConfig

    package com.zc.elasticsearch.config;
    
    import java.net.InetAddress;
    import org.elasticsearch.client.Client;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.TransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
    import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
    
    
    @Configuration
    public class ElasticSearchConfig {
    
        @Value("${elasticsearch.ip}")
        private String hostName;
    
        @Value("${elasticsearch.port}")
        private String port;
    
        @Value("${elasticsearch.cluster.name}")
        private String clusterName;
    
        @Value("${elasticsearch.pool}")
        private String poolSize;
    
        /**
         * 构建TransportClient对象
         */
        @Bean(name = "transportClient")
        public TransportClient transportClient() {
            TransportClient transportClient = null;
            try {
                // 配置信息
                Settings esSetting = Settings.builder()
                        //集群名字
                        .put("cluster.name", clusterName)
                        //增加嗅探机制,找到ES集群
                        .put("client.transport.sniff", true)
                        //增加线程池个数,暂时设为5
                        .put("thread_pool.search.size", Integer.parseInt(poolSize)).build();
                //配置信息Settings自定义
                transportClient = new PreBuiltTransportClient(esSetting);
                TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port));
                transportClient.addTransportAddresses(transportAddress);
            } catch (Exception e) {
                System.out.println(e);
            }
            return transportClient;
        }
    
        /**
         * 构建ElasticsearchTemplate对象
         */
        @Bean
        public ElasticsearchOperations elasticsearchTemplate() {
            Client client = transportClient();
            if (client != null) {
                return new ElasticsearchTemplate(client);
            } else {
                //弹出异常对象
                throw new RuntimeException("初始化Elasticsearch失败!");
            }
        }
    
    }
    
  • controller -> BookController

    package com.zc.elasticsearch.contoller;
    
    
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.action.search.SearchRequestBuilder;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.action.search.SearchType;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.xcontent.XContentBuilder;
    import org.elasticsearch.common.xcontent.XContentFactory;
    import org.elasticsearch.index.query.BoolQueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.index.query.RangeQueryBuilder;
    import org.elasticsearch.search.SearchHit;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.format.annotation.DateTimeFormat;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    @RestController
    @RequestMapping("/book")
    public class BookController {
    
        @Autowired
        private TransportClient transportClient;
    
        /**
         * 添加博客索引信息
         */
        @PostMapping("/add")
            public ResponseEntity add(@RequestParam(name = "title") String title, @RequestParam(name = "author") String author, @RequestParam(name = "word_count") int wordCount,
                @RequestParam(name = "publish_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date publishDate) {
            try {
                XContentBuilder content = XContentFactory.jsonBuilder().startObject().field("title", title).field("author", author).field("word_count", wordCount)
                        .field("publish_date", publishDate.getTime()).endObject();
                IndexResponse result = this.transportClient.prepareIndex("blogs", "blog").setSource(content).get();
                return new ResponseEntity(result.getId(), HttpStatus.OK);
            } catch (Exception e) {
                e.printStackTrace();
                ;
                return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }
    
        /**
         * 根据id查询
         */
        @GetMapping("/get")
        public ResponseEntity get(@RequestParam(name = "id", defaultValue = "") String id) {
            if (id.isEmpty()) {
                return new ResponseEntity((HttpStatus.NOT_FOUND));
            }
            GetResponse result = transportClient.prepareGet("blogs", "blog", id).get();
            if (!result.isExists()) {
                return new ResponseEntity((HttpStatus.NOT_FOUND));
            }
            return new ResponseEntity(result.getSource(), HttpStatus.OK);
        }
    
        /**
         * 按条件查询
         */
        @GetMapping("/query")
        public ResponseEntity query(@RequestParam(name = "author", required = false) String author, @RequestParam(name = "title", required = false) String title,
                @RequestParam(name = "gt_word_count", defaultValue = "0") int gtWordCount, @RequestParam(name = "lt_word_count", required = false) Integer ltWordCount) {
            //设置查询条件
            BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
            if (author != null) {
                boolQuery.must(QueryBuilders.matchQuery("author", author));
            }
            if (title != null) {
                boolQuery.must(QueryBuilders.matchQuery("title", title));
            }
            //按范围查询
            RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("word_count").from(gtWordCount);
            if (ltWordCount != null && ltWordCount > 0) {
                rangeQuery.to(ltWordCount);
            }
            boolQuery.filter(rangeQuery);
    
            SearchRequestBuilder builder = this.transportClient.prepareSearch("blogs").setTypes("blog").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(boolQuery)
                    //设置分页查询
                    .setFrom(0).setSize(10);
            System.out.println(builder);
    
            SearchResponse response = builder.get();
            List<Map<String, Object>> result = new ArrayList<>();
    
            for (SearchHit hit : response.getHits()) {
                result.add(hit.getSourceAsMap());
            }
            return new ResponseEntity(result, HttpStatus.OK);
        }
    
    }
    
  • 实体类->item

    package com.zc.elasticsearch.entity;
    
    import org.springframework.data.annotation.Id;
    import org.springframework.data.elasticsearch.annotations.Document;
    import org.springframework.data.elasticsearch.annotations.Field;
    import org.springframework.data.elasticsearch.annotations.FieldType;
    
    @Document(indexName = "item",type = "docs", shards = 1, replicas = 0)
    public class Item {
        @Id
        private Long id;
    
        @Field(type = FieldType.Text, analyzer = "ik_max_word")
        private String title; //标题
    
        @Field(type = FieldType.Keyword)
        private String category;// 分类
    
        @Field(type = FieldType.Keyword)
        private String brand; // 品牌
    
        @Field(type = FieldType.Double)
        private Double price; // 价格
    
        @Field(index = false, type = FieldType.Keyword)
        private String images; // 图片地址
    }
    
    
    
  • 启动项目

  • elasticsearch 创建 index (类似 数据库建库)

    • 在这里插入图片描述
  • 利用postman调用往里面存数据
    +在这里插入图片描述

  • 效果图:

    • 在这里插入图片描述
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:11:21  更:2021-08-20 15:12:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:08:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码