Elasticsearch无法过滤字段名为“id”

时间:2014-11-27 03:14:27

标签: search filter elasticsearch

出于某种原因,它不允许我过滤字段名称为id的嵌套字段

映射

    {
    "mappings": {
        "user": {
            "_id": {
                "path": "userID"
            },
            "properties": {
                ...,
                "languages": {
                    "type": "nested",
                    "properties": {
                        "id": {
                            "type": "integer"
                        },
                        "level": {
                            "type": "integer"
                        },
                        "learning": {
                            "type": "boolean"
                        },
                        "teaching": {
                            "type": "boolean"
                        }
                    }
                },
                ...,
            }
        }
    }
}

索引文档

_source: {
    ...,
    languages: [{
        id: 11,
        level: "4",
        learning: true
    }, {
        id: 192,
        level: "5",
        learning: true
    }, {
        id: 3,
        level: "6",
        teaching: true
    }, {
        id: 165,
        level: "2",
        learning: true
    }],
    ...,
}

问题出现在这里,如果我搜索术语id,那么无论我使用什么价值,我什么也得不到。

查询 curl -XGET localhost:9200 / users / user / _search -d

{
    "query": {
        "filtered": {
            "filter": {
                "nested": {
                    "path": "languages",
                    "filter": {
                        "term": {
                            "id": 165
                        }
                    }
                }
            }
        }
    }
}

如果我用"id": 25(或除id之外的任何内容)替换"level": 5,那么我就会得到我正在搜索的内容。

使用我遗漏的过滤字段名id时是否有隐藏的技巧?

0 个答案:

没有答案