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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> elasticsearch的join操作 -> 正文阅读

[大数据]elasticsearch的join操作

基于elasticsearch7.9.3版本的操作

构建查询条件的基本代码

// 获取分页查询构造器
        SearchSourceBuilder sourceBuilder = ElasticClientUtil.builderPageSearchBuilder(page, size);

        

//        构造父级查询条件
        // 指定hasParent查询条件,限定查询结果的父文档类型是 店铺:goodsStore
        QueryBuilder parentQueryBuilder;

        // 商品店铺id不为空,根据id筛选,否则查询所有
        if (StringUtils.hasLength(goodsStoreId)) {
            parentQueryBuilder = new TermQueryBuilder(QueryFiledNameConstant.UNDERSCORE_ID, goodsStoreId);
        }else {
            parentQueryBuilder = new MatchAllQueryBuilder();
        }

        HasParentQueryBuilder hasParentQueryBuilder =
                new HasParentQueryBuilder(GoodsRelationField.GOODS_STORE, parentQueryBuilder, false)
                        .innerHit(new InnerHitBuilder());



        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(hasParentQueryBuilder);





//      构造子级查询条件
        // 查询商品spu的子类型,商品sku信息,InnerHitBuilder默认size是3,因为商品spu下面的商品sku很可能不止3,所以设置一下size。
        HasChildQueryBuilder hasChildQueryBuilder =
                new HasChildQueryBuilder(GoodsRelationField.GOODS_SKU, QueryBuilders.matchAllQuery(), ScoreMode.None)
                        .innerHit(new InnerHitBuilder().setSize(GoodsRelationField.GOODS_SKU_MAX_SIZE));
        boolQueryBuilder.must(hasChildQueryBuilder);




//        构造本级查询条件
        // 商品名称是否为空
        if (StringUtils.hasLength(goodsName)) {
            boolQueryBuilder.must(QueryBuilders.wildcardQuery(QueryFiledNameConstant.GOODS_NAME,
                                                              StringPoolConstant.STAR + goodsName + StringPoolConstant.STAR));
        }

        sourceBuilder.query(boolQueryBuilder);

        return sourceBuilder;

生成的对应的查询条件为

{
  "query": {
    "bool": {
      "must": [
#本级查询条件        {
          "ids": {
            "values": [
              "4"
            ],
            "boost": 1.0
          }
        },
#父级查询条件
        {
          "has_parent": {
            "query": {
              "match_all": {
                "boost": 1.0
              }
            },
            "parent_type": "goodsStore",
            "score": false,
            "ignore_unmapped": false,
            "boost": 1.0,
            "inner_hits": {
              "ignore_unmapped": false,
              "from": 0,
              "size": 3,
              "version": false,
              "seq_no_primary_term": false,
              "explain": false,
              "track_scores": false
            }
          }
        },
#子级查询条件
        {
          "has_child": {
            "query": {
              "match_all": {
                "boost": 1.0
              }
            },
            "type": "goodsSku",
            "score_mode": "none",
            "min_children": 1,
            "max_children": 2147483647,
            "ignore_unmapped": false,
            "boost": 1.0,
            "inner_hits": {
              "ignore_unmapped": false,
              "from": 0,
              "size": 20,
              "version": false,
              "seq_no_primary_term": false,
              "explain": false,
              "track_scores": false
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:14:50  更:2021-09-26 10:16:10 
 
开发: 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 23:25:01-

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