【发布时间】:2015-04-27 20:50:33
【问题描述】:
我有以下 Elastic Search 查询:
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "main",
"type": "cross_fields",
"fields": [
"field1^5",
"test",
"field2",
"abc"
],
"operator": "and"
}
}
}
},
"sort": [],
"from": 0,
"size": 20
}
我正在尝试使用 NEST 客户端进行弹性搜索并使用“QueryRaw”属性运行此查询,但出现错误。
有人可以在我出错的地方提供一些输入
var uri = new Uri("Elastic_Search_Cluster_Name");
var settings = new ConnectionSettings(uri, defaultIndex: "testIndex");
var client = new ElasticClient(settings);
var resp=client.Search<dynamic>(q =>
q.Type("mappingType").QueryRaw(inputRequest.ToString())
);
错误日志:
Failed to execute phase [query], all shards failed; shardFailures {[27THF3S_QuaBLRj11MgqfA][testIndex][0]: RemoteTransportException[[pdm64-ironman][inet[/server]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[testIndex][0]: query[abc:main field2:main test:main field1:main^5.0],from[-1],size[-1]: Parse Failure [Failed to parse source [{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "main",
"type": "cross_fields",
"fields": [
"field1^5",
"test",
"field2",
"abc"
],
"operator": "and"
}
}
},
"sort": [],
"from": 0,
"size": 20
}
}]]]; nested: ElasticsearchParseException[Expected field name but got START_ARRAY "sort"]; }{[b5YxyDCcQEmSlCd9y3Sfww][testIndex][1]: RemoteTransportException[[pdm65-hulk][inet[/server]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[testIndex][1]: query[abc:main field2:main test:main field1:main^5.0],from[-1],size[-1]: Parse Failure [Failed to parse source [{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "main",
"type": "cross_fields",
"fields": [
"field1^5",
"test",
"field2",
"abc"
],
"operator": "and"
}
}
},
"sort": [],
"from": 0,
"size": 20
}
}]]];
【问题讨论】:
-
你能包括你得到的错误吗?原始查询看起来不错。
-
执行阶段[查询]失败,所有分片失败; shardFailures {[xcv23jfTQtmaFhb1PQ62pQ][rpdw][0]: SearchParseException[testIndex][0]:
-
您能否发布对 ES 的请求看起来像
Encoding.UTF8.GetString(resp.RequestInformation.Request);? -
你能提一下
inputRequest的值吗? -
inputRequest 的类型为“JToken”。我只是将上面的 json 发送到该方法。如果我发送这个简单的 JSON,它的工作原理:{"match_all":{}}
标签: elasticsearch nest elasticsearch-net