ES 外部表查询索引长文本字段内容为空

【详述】ES 外部表查询索引长文本字段内容为空
【背景】ES 外部表
建表语句:
DROP TABLE IF EXISTS es_ext_product_comment;
CREATE EXTERNAL TABLE es_ext_product_comment
(
comment_id VARCHAR(1),
goods_id VARCHAR(1),
content VARCHAR(1024),
sku_name VARCHAR(1),
comment_time datetime
)
ENGINE=ELASTICSEARCH
PROPERTIES
(
“hosts” = “*******”,
“user” = “elastic”,
“password” = “********”,
“index” = “goods_comment_v_all”,
“colocate_with” = “goods_group”
);
【业务影响】
【StarRocks版本】2.5.2
【集群规模】1fe+3be(fe与be混部)
【机器信息】8C/64G
【联系方式】421231244@qq.com
【附件】
ES 查询结果

外部表查询结果
SELECT * from es_ext_product_comment eepc WHERE comment_id = 6157695542907378151548374814;

我们最大支持字符串长度是1048576字节,是不是超出了?

不至于超出长度。文本不到1000字节。
文本如下:
我是真正的沙漠大干皮。冬季都不敢用散粉,就连夏季都很少用。这款铺到脸上真的是惊艳到我了,对着镜子照,正常的光线下,没有看到细闪,但是很雾面,皮肤也显得很细腻。我用的是白金2C0粉底液,平时老是觉得脸暗沉,这款散粉扑上去,天哪,我的皮肤显得好细腻,并且不在暗沉,还白了一个度。对第1次接触盼盼家的产品,是夏季的时候买了一款CT的眼影,那时也是抱着试试看的态度,怕买到假货,谁知收到货后百分百的正品。之后又试着买了几样东西,真的是不错。虽然在双11的时候我订了三样东西,现在还没有发货。但是能理解现在疫情嘛,想要正品还是得耐心等待。但是如果是现货的话,确实没有犹豫,当天都发货了。这年头很少遇到这么良心的卖家,支持盼盼。我现在用的产品,首选就是在盼盼家先搜一下看有没有。

这个问题有定位出来嘛?

收到 正在排查~~~~~~~~~~

这个配置大点试一下。content string,

都试过了(包括你反馈的最大长度),返回都是NULL

收到 我们排查一下。

content所有行都是查出来都是null吗?

ES那个索引的mapping发一下。

不是所有,我发现是字段比较长的。

为什么有那么多 VARCHAR(1)

就是内容比较长的content才会显示null,其他短一点就能正常显示吗?

{
  "mapping": {
    "dynamic": "strict",
    "properties": {
      "comment_id": {
        "type": "keyword"
      },
      "comment_time": {
        "type": "date",
        "format": "yyyy-MM-dd"
      },
      "content": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "analyzer": "simple_comma_analyzer",
        "fielddata": true
      },
      "goods_id": {
        "type": "keyword"
      },
      "goods_pk": {
        "type": "keyword"
      },
      "sku_name": {
        "type": "keyword"
      }
    }
  }
}

是的,据我观察我发现这么一个共性。

之前在文档介绍中提到,外部表的字段长度毫无意义,因为数据不存储在StarRocks上,只是标记字段类型。所以才设置varchar(1)。实际也是超过一个字符的数据能查出来。

CREATE EXTERNAL TABLE es_ext_product_comment
(
comment_id VARCHAR(1),
goods_id VARCHAR(1),
content STRING,
sku_name VARCHAR(1),
comment_time datetime
)
ENGINE=ELASTICSEARCH
PROPERTIES
(
“hosts” = “*******”,
“user” = “elastic”,
“password” = “********”,
“index” = “goods_comment_v_all”,
“colocate_with” = “goods_group”
);

字段和顺序要跟ES的索引对上吧

这个文档并没有明确提出字段顺序字段个数必须要一致。

CREATE EXTERNAL TABLE es_ext_product_comment

(

comment_id STRING,

comment_time datetime,

content STRING,

goods_id STRING,

goods_pk STRING,

sku_name STRING

)

ENGINE=ELASTICSEARCH

PROPERTIES

(

“hosts” = “*******”,

“user” = “elastic”,

“password” = “********”,

“index” = “goods_comment_v_all”,

“colocate_with” = “goods_group”

);

这个试一下

image
一样是空

字段比较短的能查到