elasticsearch - 如何在 Elasticsearch 中查询属性具有值的记录?
问题描述
我正在尝试在我的 Elasticsearch 中搜索该字段images
具有价值的所有记录?images
类型object
是。
我尝试了以下
GET /records/_search
{
"query": {
"exists": {
"field": "images"
}
}
}
我也尝试了以下
GET /records/_search
{
"query": {
"bool": {
"must": {
"exists": {
"field": "images"
}
}
}
}
}
但以上两个调用返回 0 个命中。
但是,当我执行以下命令时,我得到了一条images
有价值的记录
GET /records/_doc/8875352
"images" : [
{
"path" : "1/8875352/1.jpg",
"is_preferred" : false,
"object_id" : 1
},
{
"path" : "1/8875352/2.jpg",
"is_preferred" : false,
"object_id" : 2
},
{
"path" : "1/8875352/3.jpg",
"is_preferred" : false,
"object_id" : 3
},
{
"path" : "1/8875352/4.jpg",
"is_preferred" : false,
"object_id" : 4
},
{
"path" : "1/8875352/5.jpg",
"is_preferred" : false,
"object_id" : 5
},
{
"path" : "1/8875352/6.jpg",
"is_preferred" : false,
"object_id" : 6
},
{
"path" : "1/8875352/7.jpg",
"is_preferred" : false,
"object_id" : 7
},
{
"path" : "1/8875352/8.jpg",
"is_preferred" : false,
"object_id" : 8
}
]
解决方案
images
您可以使用以下查询找到其中至少有 1 个值的所有记录
{
"query": {
"exists": {
"field": "images.path"
}
}
}
或者您可以使用脚本过滤数据
{
"query": {
"bool": {
"filter": {
"script": {
"script": {
"source": "doc['images.path.keyword'].length > 0",
"lang": "painless"
}
}
}
}
}
}
推荐阅读
- html - 如何在此代码中实现下拉菜单?
- azure - 'Microsoft.Azure.KeyVault.KeyVaultClient' 类型中的 get_SerializationSettings'
- python - 为什么抓取网页的最后一项后出现错误?
- listview - 具有可变项目计数的 LIstview.builder 中的 RangeError 无法正常工作
- javascript - 来自另一个库的原型类
- c - 在 c 中插入数组时出错,因为它显示插入的八进制值
- sql - 在 oracle 12.1 中如何使用 sqlplus 将表数据导出到 csv 文件中
- android - 如何在其他 React-Native 应用程序中启动 React-Native 应用程序
- sas - 如何在日期条件下平均 SAS 中的数据子集?
- javascript - Express: PayloadTooLargeError: 请求实体太大