在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

es中,nested类型同字段2组不同的键值对查询问题

Elasticsearch | 作者 congdayong | 发布于2016年05月20日 | 阅读数:5294

在索引中,有nested类型的字段params包含一条数据如下
[
    {
        "paramId":"11",
        "valueId":"111",
        "needIndex":"1"
    },
    {
        "paramId":"22",
        "valueId":"222",
        "needIndex":"2"
    }
]
 
前端送过来的查询参数类似 (params.paramId = 11, params.valueId =111) && (params.paramId =22, params.valueId = 222)
简单的说,要找到当paramId =11 时,valueId 要=111  paramId =22 时,valueId 要=111
要查询命中这条数据,这查询语句应该怎么写?
已邀请:

flank

赞同来自:

{
"query": {
"filtered": {
"query": {
"match_all": { }
},
"filter": {
"bool": {
"must": {
"nested": {
"path": "A.B",
"filter": {
"bool": {
"must": [
{
"terms": {
"A.B.paramId": ["11","22" ]
}
},
{
"terms": {
"A.B.valueId": [ "111", "222" ]
}
}
]
}
}
}
}
}
}
}
}
}


看看是不是你想要的,大致应该这么写,我没验证,自己试试

cl1321 - 85后IT女

赞同来自:

感觉上面的查询语句,像:paramId="11"且valueId="222"的数据也能命中

要回复问题请先登录注册