sql - 从 sql 翻译的 elasticsearch dsl 无法工作
问题描述
在 yelp 数据集上尝试 elasticsearch(6.4.2) sql rest api,
read -r -d '' sql <<'EOF'
{
"query":"select city, COUNT(*) AS c from \"yelp.business\" group by city"
}
EOF
curl -v -XPOST "http://$host/_xpack/sql?format=txt" -H'Content-Type: application/json' -d"$sql"
得到正确的回应
city | c
----------------------------+---------------
Cleveland |2977
Cleveland Heights |179
Cleveland Hghts. |1
East Cleveland |4
Mayfield Heights (Cleveland)|1
但是将 sql 转换为 dsl
query=`curl -v -XPOST "http://$host/_xpack/sql/translate?format=json" -H'Content-Type: application/json' -d"$sql"`
得到以下信息:
{
"_source" : false,
"size" : 0,
"aggregations" : {
"groupby" : {
"composite" : {
"sources" : [
{
"2467" : {
"terms" : {
"order" : "asc",
"field" : "city.keyword",
"missing_bucket" : false
}
}
}
],
"size" : 1000
}
}
},
"stored_fields" : "_none_"
}
根据搜索请求执行翻译后的 dsl
curl -XGET "http://$host/antkrill.event/_search" -H 'Content-Type: application/json' -d"$query"
并得到错误
找不到字段 [city.keyword] 并且未设置 [missing_bucket]
为什么用sql搜索没问题,但翻译后的dsl出错
解决方案
我自己的问题!第二个查询是在不同索引上使用翻译后的 dsl 执行的!</p>
推荐阅读
- javascript - 更改音量时禁用 Windows 弹出窗口(来自网页上的 Javascript)
- javascript - 无法使用 React Router 创建嵌套选项卡路由
- swagger - 如何隐藏特定路径中的 swagger ref 属性?
- firebase - 如何在小部件上显示从 Firebase 到 Flutter 的当前用户数据
- cryptography - 您如何计算原始位置中没有字母的英文单字母密码的密钥空间?
- html - Reactjs:state.length === 5 之后的输入掩码
- flutter - 如何在 Dart 中传递异常?
- python - 需要在使用python的等号登录文件后打印一个二到五位数字
- python - 我的删除视图出现 NoReverseMatch 错误
- vb.net - 沿 GraphicsPath 创建新图片