我试图在C#中使用webclient调用elasticsearch查询。我的API网址正确地使用了角度ajax调用(POST)并传递了一些参数而没有。
我在查询中发送的JSON是:
{
'from': 0,
'size': 20,
'sort': ['_score',
{
'publishDate': {
'order': 'desc'
}
}],
'query': {
'bool': {
'should': [{
'query_string': {
'query': 'Test*'
}
},
{
'match_phrase': {
'reportName': 'Test'
}
},
{
'match': {
'researcher': 'Test'
}
}]
}
},
'filter': {
'bool': {
'must': [{
'numeric_range': {
'price': {
'lte': 99999
}
}
},
{
'numeric_range': {
'publishDate': {
'gte': '1957-06-25T07: 30: 27.806Z'
}
}
},
{
'numeric_range': {
'qualityScore': {
'gt': 0
}
}
},
{
'terms': {
'reportLanguageMaps': ['English']
}
}],
'should': []
}
},
'min_score': 0.005
}
这是我的代码:
var queryString = "{'from':0,'size':20,'sort':['_score',{'publishDate':{'order':'desc'}}],'query':{'bool':{'should':[{'query_string':{'query':'Test * '}},{'match_phrase':{'reportName':'Test'}},{'match':{'researcher':'Test'}}]}},'filter':{'bool':{'must':[{'numeric_range':{'price':{'lte':99999}}},{'numeric_range':{'publishDate':{'gte':'1957-06-25T07: 30:27.806Z'}}},{'numeric_range':{'qualityScore':{'gt':0}}},{'terms':{'reportLanguageMaps':['English']}}],'should':[]}},'min_score':0.005}";
WebClient testCLient = new WebClient();
var result = testCLient.UploadString(ESConstant.ESAPIConnection, "POST", queryString);
现在上面的代码给了我400个不好的请求。如果不通过queryString它将成功调用并给我结果(json,但没有应用过滤器对我来说没有意义)。