Qdrant技术问询:如何查询Payload含指定键的Points?
解决Qdrant查询Payload包含特定带点键的问题
你的核心问题在于两点:一是用了不合适的match通配符检测键存在,二是没正确区分带点键名与嵌套路径的差异。以下是修正后的查询方案:
正确查询语句
{ "limit": 10, "filter": { "must": [ { "nested": { "key": "data", "filter": { "must": [ { "exists": { "key": "some.key.one" } } ] } } } ] } }
关键修正说明
- 用
exists替代match:match: {value: "*"}需要字段开启全文索引,且是针对值的模糊匹配,并非专门检测键是否存在。exists是Qdrant专门用来判断Payload中某个键是否存在的语法,更高效准确。 - 正确处理带点键名:你的
data对象下的键是完整字符串"some.key.one"(而非data.some.key.one这样的多层嵌套路径),因此需要在nested过滤器内部直接指定这个键名,Qdrant会将其识别为单个键而非嵌套路径解析。
额外注意事项
Qdrant默认支持嵌套Payload结构,无需额外配置即可使用nested过滤器。
内容的提问来源于stack exchange,提问作者tnahddisttud
相关产品推荐
相关产品推荐

