我有以下映射[TB]
**(dynamic strict on the type)**
我想查询存在图像的文档
我尝试了几种组合但到目前为止没有运气。
这是我试过的最后一次
"created": {
"type": "date"
},
"images": {
"properties": {
"checksum": {
"type": "text",
"index": false
},
"path": {
"type": "text",
"index": false
},
"url": {
"type": "text",
"index": false
}
}
},
但是在这里它表示字段数据不适用于文本字段。无论如何,我可以在不改变映射的情况下做到这一点。
理想情况下,这应该会给我所有没有图像的记录。但这是返回所有记录
POST catalog/_search
{
"query": {
"script": {
"script": "doc['images'].values.length > 0"
}
}
}
POST catalog/_search
{
"query": {
"script": {
"script": "doc['images.url'].values.length > 0"
}
}
}
以下是有图像的示例文档。
POST catalog/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "images"
}
}
]
}
}
}
更新
通过以下查询,我预计elasticsearch将返回缺少图像的文档
{
"_index": "catalog-2018-03-03",
"_type": "product",
"_id": "151755703145e27e4983a0bd1b70be44",
"_score": 1,
"_source": {
"merchant": {
"link": "http://shophive.com/",
"name": "shophive"
},
"images": [],
"updated": "2018-03-18T13:06:33.583480",
"name": "Plantronics Savi Talk",
"created": "2018-03-18T13:06:33.583459",
"url": "http://www.shophive.com/plantronics-savi-talk",
"price": {
"new": 24999,
"old": 24999,
"discount_percent": 0
},
"category": {
"level_1": {
"url": "computers/tablets/networking",
"name": "Computers/Tablets & Networking "
},
"level_2": {
"url": "tablets/ebook-readers",
"name": "Tablets & eBook Readers"
}
}
}
}
但我收到的结果是我索引中的所有文档,显然每个文档都有一个图像。以下是我通过上述查询获得的示例文档
POST catalog/product/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "images"
}
}
]
}
}
}
答案 0 :(得分:0)
您应该省略查询中的方括号,因为您只有一个子句
POST /catalog/_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "images"
}
}
}
}
}
这将为我返回带有图像的文档,如果只需要有图像的文档
POST /catalog/_search
{
"query": {
"exists": {
"field": "images"
}
}
}