当前位置: 首页>前端>正文

es 嵌套聚合结果 如何转化为json es数据聚合

目录

数据聚合

聚合的分类

编辑 DSL实现Bucket聚合

编辑

 DSL实现Metrics聚合编辑

RestAPI实现聚合

 对接前端接口编辑

 自定义分词器编辑

Completion suggester查询

Completion suggester查询

酒店数据自动补全

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

 数据同步问题分析编辑

同步问题分析

数据同步问题分析

数据问题分析

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

ES集群机构

ES集群的节点角色

ES集群的脑裂

ES集群的分布式存储

ES集群的分布式存储

ES集群的分布式查询

ES集群的故障转移


数据聚合

 

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud,第1张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_02,第2张

聚合的分类

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_03,第3张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_04,第4张

 DSL实现Bucket聚合

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_05,第5张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_06,第6张

#聚合功能
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
    
      }
    }
  }
}

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_07,第7张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_08,第8张

 DSL实现Metrics聚合

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_09,第9张

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

RestAPI实现聚合

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_10,第10张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_11,第11张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_12,第12张

@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;
    }

 对接前端接口

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_13,第13张

 

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_分布式_14,第14张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_15,第15张

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

 自定义分词器

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_分布式_16,第16张

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"
      }
    }
  }
}

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_17,第17张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_18,第18张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_19,第19张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_20,第20张

Completion suggester查询

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_21,第21张

Completion suggester查询

 

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_22,第22张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_23,第23张

// 自动补全的索引库
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条结果
      }
    }
  }
}

酒店数据自动补全

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_24,第24张

#酒店数据索引库
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实现自动补全

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_25,第25张

 

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_26,第26张

 

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_27,第27张

@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);
        }
    }

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

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_28,第28张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_29,第29张

 数据同步问题分析

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_30,第30张

同步问题分析

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_31,第31张

数据同步问题分析

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_搜索引擎_32,第32张

数据问题分析

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_分布式_33,第33张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_分布式_34,第34张

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

 

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_35,第35张

@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集群机构

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_es 嵌套聚合结果 如何转化为json_36,第36张

ES集群的节点角色

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_37,第37张

ES集群的分布式查询

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_38,第38张

ES集群的脑裂

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_39,第39张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_40,第40张

ES集群的分布式存储

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_41,第41张

ES集群的分布式存储

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_分布式_42,第42张

ES集群的分布式查询

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_43,第43张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_spring cloud_44,第44张

ES集群的故障转移

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_elasticsearch_45,第45张

es 嵌套聚合结果 如何转化为json es数据聚合,es 嵌套聚合结果 如何转化为json es数据聚合_分布式_46,第46张


https://www.xamrdz.com/web/24m1964332.html

相关文章: