使用webclient从C#查询Elasticsearch会引发400个错误请求?

时间:2017-06-27 18:14:44

标签: c# elasticsearch asp.net-web-api

我试图在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,但没有应用过滤器对我来说没有意义)。

0 个答案:

没有答案