如何基于值对条件查询Elasticsearch文档?
Elasticsearch 查询匹配指定键值对的文档
要检索出Identifiers字段中同时包含foo: val1和bar: val2的文档,可以使用**布尔查询(bool query)结合精确匹配查询(term query)**实现,这是最直接的方案。
查询示例代码
{ "query": { "bool": { "must": [ { "term": { "Identifiers.foo": "val1" } }, { "term": { "Identifiers.bar": "val2" } } ] } }, "_source": ["messageId"] // 可选,仅返回所需字段,减少数据传输量 }
关键说明
bool.must:确保数组内所有查询条件同时满足,也就是必须同时匹配foo=val1和bar=val2两个键值对。term查询:用于精确匹配字段的原始值,完全适配这种明确的键值对匹配场景。_source:如果只需要获取messageId,添加该参数可过滤返回字段,提升查询效率。
如果你的Identifiers字段被映射为嵌套类型(nested),则需要改用nested查询处理:
{ "query": { "nested": { "path": "Identifiers", "query": { "bool": { "must": [ { "term": { "Identifiers.foo": "val1" } }, { "term": { "Identifiers.bar": "val2" } } ] } } } }, "_source": ["messageId"] }
内容的提问来源于stack exchange,提问作者SandhyaRani D
相关产品推荐
相关产品推荐

