elasticsearch,C#,elasticsearch" /> elasticsearch,C#,elasticsearch" />

C# ElasticSearch过滤查询\u search 400错误响应

C# ElasticSearch过滤查询\u search 400错误响应,c#,elasticsearch,C#,elasticsearch,我正在尝试将筛选器用于搜索查询。搜索请求在没有筛选器的情况下正常工作。但使用过滤器,我得到400个错误作为响应。 这是类型映射: var mapp = new { mappings = new { posts = new { properties = new

我正在尝试将筛选器用于搜索查询。搜索请求在没有筛选器的情况下正常工作。但使用过滤器,我得到400个错误作为响应。 这是类型映射:

var mapp = new
            {
                mappings = new
                {
                    posts = new
                    {
                        properties = new
                        {
                            FullText = new
                            {
                                type = "string",
                                analyzer = "russian"
                            },
                            Title = new
                            {
                                type = "string",
                                analyzer = "russian"
                            },
                            PostPubDate = new
                            {
                                type = "date"
                            },
                            Link = new
                            {
                                type = "string",
                                index = "not_analyzed"
                            },
                            RubricsIds = new
                            {
                                type = "integer"
                            },
                            ObjectsIds = new
                            {
                                type = "integer"
                            },
                            SourceId = new
                            {
                                type = "integer"
                            }
                        }
                    }
                }
            };
这是一个使用筛选查询进行索引的请求:

string url = "http://localhost:9200/neg_collector/posts/_search";
            var request = (HttpWebRequest)HttpWebRequest.Create(url);
            var o = new
            {
                size = 20,
                query = new
                {
                    filtered = new
                    {
                        query = new
                        {
                            query_string = new
                            {
                                fields = new[] { "Title" },
                                query = search_query
                            }
                        },
                        filter = new
                        {
                            @bool = new
                            {
                                should = new
                                {
                                    term = new
                                    {
                                        SourceId = sIds
                                    }
                                }
                            }
                        }
                    }
                }                
            };


            request.Method = "POST";
            var jsonObj = JsonConvert.SerializeObject(o);
            var data = Encoding.UTF8.GetBytes(jsonObj);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
我想使用一个整数数组来过滤具有特定SourceId-s的结果。但我得到了错误400。
我做错了什么?谢谢

所以问题是这个语法适用于elasticsearch 2版本(在另一台计算机上运行得很好)。这里我有ElasticSearch 5,应该使用另一种过滤方法:

var o = new
            {
                size = 20,
                query = new
                {
                    @bool = new
                    {
                        must = new
                        {
                            query_string = new
                            {
                                fields = new[] { "Title" },
                                query = search_query
                            }
                        },
                        filter = new
                        {
                            terms = new
                            {
                                SourceId = new[] {10,11,12}
                            }
                        }
                    }
                }                
            };

描述了您的ES版本和原始响应是什么?请分享。另一方面,你应该使用用户应用程序/json内容类型。@hkulekci是的,问题在于ES版本(我在ES2上尝试过这段代码,它成功了。现在它在ES 5上不起作用)