我有 Product
模型和 Sku
模型, Product
有多个 Skus
.
在elasticsearch中,我可以通过 Sku
定价过滤 Products
,其查询结构如下:
query:
bool:
must: [
nested:
path: 'skus'
query:
bool:
must: [
range:
baseline_price:
gte: opts.min_price
lte: opts.max_price
]
]
但是,我在 Sku
模型上为 length
, width
和 height
值执行类似操作时遇到了麻烦 .
我想找到所有没有 length
, width
或 height
的 Skus
. 我正在尝试这样的事情:
query:
bool:
must: [
nested:
path: 'skus'
query:
bool:
should: [
exists: { field: 'length' }
exists: { field: 'width' }
exists: { field: 'height' }
]
]
只是为了返回任何有用的东西,但任何组合我都会抛出错误 . 在上面的情况下,它抛出 No query registered for [exists]
我看了documentation for null values in elasticsearch,但仍然没有运气 .
我该怎么写这个查询?
1 回答
我能够让它有点像这样工作:
这将找到缺少
width
的Skus
. 但是,不幸的是,添加额外的length
或height
字段表现为OR
而不是AND
,我不确定这是否是elasticsearch的错误 .这足以满足我们现在的需求,但仍然不确定是否有方法可以过滤多个缺少的字段 .