【发布时间】:2021-08-12 11:28:24
【问题描述】:
我是 trino 的新手,我正在尝试使用它来查询弹性搜索中的嵌套对象。
这是我在 elasticsearch 中的映射:
{
"product_index": {
"mappings": {
"properties" :{
"id" : { "type" : "keyword"},
"name" { "type" : "keyword"},
"linked_products" :{
"type": "nested",
"properties" :{
"id" : { "type" : "keyword"}
}
}
}
}
}
}
我需要对 linked_products 下的 id 字段进行查询。 trino 中对 id 字段执行查询的语法是什么? 我是否需要在 elastic 中的目标索引映射上使用特殊定义来映射 trino 的嵌套部分?
================================================ ==========
嗨, 我将尝试对我的问题进行一些澄清。
我们正在尝试根据 id 字段查询数据。 这是 Elastic 中的查询:
get product_index/_search
{
"query": {
"nested" : {
"path" : "linked_products",
"query": {
"bool": {
"should" : [
{ "match" : {"linked_products.id" :123}}
]
}
}
}
}
}
我们尝试通过两种方式查询 id 字段:
- Trino 查询 - 选择计数(*) 来自 es_table aaa 其中 any_match(aaa.linked_products, x-> x.id=123)
当我们尝试根据 id 字段进行查询时,不会发生 Pushdown to elastic 并且连接器会将所有文档检索到 trino(这只发生在对嵌套文档的查询中)。
- 将 es-query 从 trino 发送到 elastic: SELECT * FROM es.default."$query:" 它可以工作,但是当我们尝试使用许多文档检索 id 时,我们从弹性客户端超时。 我从文档中不明白是否可以在我们使用 es-query 时执行滚动以避免超时问题。
【问题讨论】:
标签: elasticsearch nested presto trino