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