SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题

这篇具有很好参考价值的文章主要介绍了SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

数据聚合

聚合的分类

​编辑 DSL实现Bucket聚合

​编辑

 DSL实现Metrics聚合​编辑

RestAPI实现聚合

 对接前端接口​编辑

 自定义分词器​编辑

Completion suggester查询

Completion suggester查询

酒店数据自动补全

实现酒店搜索框界面输入框的自动补全

 数据同步问题分析​编辑

同步问题分析

数据同步问题分析

数据问题分析

利用 MQ实现mysql与elasticearch数据同步

ES集群机构

ES集群的节点角色

ES集群的脑裂

ES集群的分布式存储

ES集群的分布式存储

ES集群的分布式查询

ES集群的故障转移


数据聚合

 SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

聚合的分类

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

 DSL实现Bucket聚合

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

#聚合功能
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20
    
      }
    }
  }
}

#聚合功能,自定义排序规则
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20,
        "order": {
          "_count": "asc"
        }
      }
    }
  }
}

#聚合功能,限定聚合范围
GET /hotel/_search
{
  "query": {
    "range": {
      "price": {
        "lte": 200
      }
    }
  }, 
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20
    
      }
    }
  }
}

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

 DSL实现Metrics聚合

嵌套聚合metric
GET /hotel/_search
{
  "size": 0,
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20,
        "order": {
          "scoreAgg.avg": "desc"
        }
      },
      "aggs": {
        "scoreAgg": {
          "stats": {
            "field": "score"
          }
        }
      }
    }
  }
}

RestAPI实现聚合

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

@Override
    public Map<String, List<String>> filters() {
        try {
            //1.准备Request
            SearchRequest request = new SearchRequest("hotel");
            //2.准备DSL
            //2.1设置size
            request.source().size(0);
            //2.2 聚合
            buildAggregation(request);
            //3.发出请求
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);

            //4.解析结果
            Map<String, List<String>> result = new HashMap<>();
            Aggregations aggregations = response.getAggregations();
            //TODO 根据品牌名称,获取品牌结果
            List<String> brandList = getAggByName(aggregations,"brandAgg");
            result.put("brand",brandList);

            //TODO 根据品牌名称,获取品牌结果
            List<String> cityList = getAggByName(aggregations,"cityAgg");
            result.put("city",cityList);

            //TODO 根据品牌名称,获取品牌结果
            List<String> starList = getAggByName(aggregations,"starAgg");
            result.put("starName",starList);

            return result;
        }
        catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private List<String> getAggByName(Aggregations aggregations,String aggName) {
        //4.1根据聚合名称获取聚合结果
        Terms brandTerms = aggregations.get(aggName);
        //4.2获取buckets
        List<? extends Terms.Bucket> buckets = brandTerms.getBuckets();
        //4.3遍历
        List<String> brandList = new ArrayList<>();
        for ( Terms.Bucket bucket : buckets ) {
            String key = bucket.getKeyAsString();
//            System.out.println(key);
            brandList.add(key);

        }
        return brandList;
    }

 对接前端接口

 SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

POST /_analyze
{
  "text": ["如家酒店还不错"],
  "analyzer": "pinyin"
  
}

 自定义分词器

POST /test2/_analyze
{
  "text": ["如家酒店还不错"],
  "analyzer": "my_analyzer"
  
}

// 自定义拼音分词器
PUT /test2
{
  "settings": {
    "analysis": {
      "analyzer": { 
        "my_analyzer": { 
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name":{
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

Completion suggester查询

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

Completion suggester查询

 SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

// 自动补全的索引库
PUT test
{
  "mappings": {
    "properties": {
      "title":{
        "type": "completion"
      }
    }
  }
}
// 示例数据
POST test/_doc
{
  "title": ["Sony", "WH-1000XM3"]
}
POST test/_doc
{
  "title": ["SK-II", "PITERA"]
}
POST test/_doc
{
  "title": ["Nintendo", "switch"]
}

// 自动补全查询
POST /test/_search
{
  "suggest": {
    "title_suggest": {
      "text": "s", // 关键字
      "completion": {
        "field": "title", // 补全字段
        "skip_duplicates": true, // 跳过重复的
        "size": 10 // 获取前10条结果
      }
    }
  }
}

酒店数据自动补全

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq


#酒店数据索引库
GET /hotel/_mapping
DELETE /hotel
#酒店数据索引库
PUT /hotel
{
  "settings": {
    "analysis": {
      "analyzer": {
        "text_anlyzer": {
          "tokenizer": "ik_max_word",
          "filter": "py"
        },
        "completion_analyzer": {
          "tokenizer": "keyword",
          "filter": "py"
        }
      },
      "filter": {
        "py": {
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "id":{
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "text_anlyzer",
        "search_analyzer": "ik_smart",
        "copy_to": "all"
      },
      "address":{
        "type": "keyword",
        "index": false
      },
      "price":{
        "type": "integer"
      },
      "score":{
        "type": "integer"
      },
      "brand":{
        "type": "keyword",
        "copy_to": "all"
      },
      "city":{
        "type": "keyword"
      },
      "starName":{
        "type": "keyword"
      },
      "business":{
        "type": "keyword",
        "copy_to": "all"
      },
      "location":{
        "type": "geo_point"
      },
      "pic":{
        "type": "keyword",
        "index": false
      },
      "all":{
        "type": "text",
        "analyzer": "text_anlyzer",
        "search_analyzer": "ik_smart"
      },
      "suggestion":{
          "type": "completion",
          "analyzer": "completion_analyzer"
      }
    }
  }
}

GET /hotel/_search
{
  "query": {
    "match_all": {}
  }
}

GET /hotel/_search
{
  "suggest": {
    "suggestions": {
      "text":"sd",
      "completion":{
        "field":"suggestion",
        "skip_duplicates": true, 
        "size": 10 
      }
    }
  }
}

RestAPI实现自动补全

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

 SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

 SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

@Test
    void testSuggest() throws IOException {
        //1、准备Request
        SearchRequest request = new SearchRequest("hotel");
        //2.准备DSL
        request.source().suggest(new SuggestBuilder().addSuggestion(
                "suggestions",
                SuggestBuilders.completionSuggestion("suggestion")
                .prefix("hz")
                .skipDuplicates(true)
                .size(10)
        ));
        //3、发起请求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        //4、解析结果
        Suggest suggest = response.getSuggest();
        //4.1根据补全查询名称,获取补全结果
         CompletionSuggestion suggestions = suggest.getSuggestion("suggestions");
        ///4.2获取options
         List<CompletionSuggestion.Entry.Option> options = suggestions.getOptions();
        //4.3遍历
        for ( CompletionSuggestion.Entry.Option option : options ) {
            String text = option.getText().toString();
            System.out.println("text = " + text);
        }
    }

实现酒店搜索框界面输入框的自动补全

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

 数据同步问题分析

同步问题分析

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

数据同步问题分析

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

数据问题分析

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

利用 MQ实现mysql与elasticearch数据同步

 SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq


@Configuration
public class MqConfig {
    @Bean
    public TopicExchange topicExchange(){
        return new TopicExchange(MqConstants.HOTEL_EXCHANGE,true,false);
    }

    @Bean
    public Queue insertQueue(){
        return new Queue(MqConstants.HOTEL_INSERT_QUEUE,true);
    }

    @Bean
    public Queue deleteQueue(){
        return new Queue(MqConstants.HOTEL_DELETE_QUEUE,true);
    }

    @Bean
    public Binding insertQueueBinding(){
        return BindingBuilder.bind(insertQueue()).to(topicExchange()).with(MqConstants.HOTEL_INSERT_KEY);
    }

    @Bean
    public Binding deleteQueueBinding(){
        return BindingBuilder.bind(deleteQueue()).to(topicExchange()).with(MqConstants.HOTEL_DELETE_KEY);
    }

}

@Component
public class HotelListener {
    @Autowired
    private IHotelService hotelService;
    /**
     * 监听酒店新增或修改的业务
     * @param id 酒店id
     */
    @RabbitListener(queues = MqConstants.HOTEL_INSERT_QUEUE)
    public void listenHotelInsertOrUpdate(Long id){

        hotelService.insertById(id);
    }

    /**
     * 监听酒店删除业务
     * @param id 酒店id
     */
    @RabbitListener(queues = MqConstants.HOTEL_DELETE_QUEUE)
    public void listenHotelDelete(Long id){
        hotelService.deleteById(id);
    }
}
   @PutMapping()
    public void updateById(@RequestBody Hotel hotel){
        if (hotel.getId() == null) {
            throw new InvalidParameterException("id不能为空");
        }
        hotelService.updateById(hotel);
        rabbitTemplate.convertAndSend(
                MqConstants.HOTEL_EXCHANGE,
                MqConstants.HOTEL_INSERT_KEY,
                hotel.getId());
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable("id") Long id) {
        hotelService.removeById(id);
        rabbitTemplate.convertAndSend(
                MqConstants.HOTEL_EXCHANGE,
                MqConstants.HOTEL_DELETE_KEY,
                id);
    }

ES集群机构

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的节点角色

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的分布式查询

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的脑裂

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的分布式存储

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的分布式存储

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的分布式查询

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

ES集群的故障转移

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq

SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题,springcloud微服务,分布式,搜索引擎,spring cloud,elasticsearch,rabbitmq文章来源地址https://www.toymoban.com/news/detail-563981.html

到了这里,关于SpringCloud分布式搜索引擎、数据聚合、ES和MQ的结合使用、ES集群的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式搜索引擎——elasticsearch搜索功能

    Elasticsearch提供了基于JSON的DSL (Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询:根据精确词条

    2024年02月05日
    浏览(68)
  • 【分布式搜索引擎02】

    elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去倒排索

    2024年02月01日
    浏览(43)
  • 分布式搜索引擎--认识

    elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 。 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。 而elasticsearch是elastic stack的核

    2024年01月18日
    浏览(44)
  • 【分布式搜索引擎03】

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近

    2024年02月05日
    浏览(46)
  • ElasticSearch分布式搜索引擎

    KuangStudy ElasticSearch学习视频:狂神说ElasticSearch教程 1、官网 Elaticsearch ,简称为es,es是一个开源的 高扩展 的 分布式全文检索引擎 ,它可以近乎 实时的存储 、 检索数据; 本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用

    2024年02月16日
    浏览(47)
  • 分布式搜索引擎----elasticsearch

    目录 1、初识elasticsearch 1.1、什么是elasticsearch 1.2.ELK技术栈 2、正向索引和倒排索引 2.1、正向索引 2.2、倒排索引 2.3、正向索引和倒排索引的区别 3、elasticsearch中的概念理解 3.1、文档和字段 3.2、索引和映射 3.3、mysql与elasticsearch         elasticsearch是一款非常强大的开源搜索

    2024年02月11日
    浏览(54)
  • 【分布式搜索引擎es】

    elasticsearch最擅长的是 搜索 和 数据分析 。 查询文档 常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_match_query 精确查询 :根据精确

    2024年02月10日
    浏览(48)
  • 分布式搜索引擎ES

    elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 ELK技术栈 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应

    2024年02月04日
    浏览(41)
  • 【分布式搜索引擎elasticsearch】

    什么是elasticsearch? 一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能 什么是elastic stack(ELK)? 是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在

    2024年02月10日
    浏览(52)
  • 分布式搜索引擎-elasticsearch基础

    elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在 日志数据分析 、 实时监控 等领域。 elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。 Lucen

    2024年03月20日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包