我将一个任意的嵌套对象存储为一个扁平化字段“_meta”,其中包含了与产品相关的各种信息。
"mappings": {
"dynamic": "strict",
"properties": {
"_meta": {
"type": "flattened"
},
...
因此在尝试搜索时:
{
"query": {
"exists": {
"field": "_meta.user"
}
}
}
我希望检索填充了该字段的所有文档,但没有找到匹配项,尽管如果搜索特定文档,我可以看到至少有一个文档填充了该字段:
"user": {
"origin_title": "some title",
"origin_title_en": "some other title",
"address": "some address",
"performed_orders_count": 0,
"phone": "some phone",
"name": "some name",
"tariff": null,
"proposal_image_background_color": null
},
那么,在平面化的数据字段中搜索究竟是如何工作的呢?为什么我没有得到任何结果呢?
1条答案
按热度按时间4urapxun1#
Tldr;
那是因为路
flattened
fields work的缘故。在您的情况下:
Elasticsearch可用的表示法有:
为了重现
对于设置:
此查询将查找2条记录:
这一条,只打算匹配第一个文档:
因此对于exist查询:
此方法将只返回最后一个文档。
而这一个操作系统将返回第1个和第3个: