带有多个词条查询的Elasticsearch nester_filter

时间:2019-05-16 18:08:36

标签: elasticsearch

我正在尝试对多个term查询使用elasticsearch(6.7)排序。 但是,当有3个term查询时,它不会对数据进行排序。仅在我指定时有效

 {
    "term": {
       "instance.instFields.sourceFieldId": {
         "value": "16044"
       }
    }
 },

下面是所有3个词的排序查询。

"sort": [
    {
        "instance.instFields.fieldDate": {
            "order": "desc",
            "nested_path": "instance.instFields",
            "nested_filter": {
                "bool": {
                    "must": [
                        {
                            "term": {
                                "instance.instFields.sourceFieldId": {
                                    "value": "16044"
                                }
                            }
                        },
                        {
                            "term": {
                                "instance.dataSourceId": {
                                    "value": "819"
                                }
                            }
                        },
                        {
                            "term": {
                                "instance.dsTypeId": {
                                    "value": "2301"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
],

感谢您提供帮助以解决此问题。

1 个答案:

答案 0 :(得分:0)

instance.dataSourceIdinstance.dsTypeId字段不在您声明的嵌套路径(instance.instFields)之外,因此没有内部对象与嵌套过滤器匹配,并且它们也不会被排序考虑。

顺便说一句,从ES 6.1开始,nested_pathnested_filter选项已被弃用,取而代之的是pathfilter