ElasticSearch NEST 执行原始查询 DSL
ElasticSearch NEST Executing raw Query DSL
我正在尝试在 API 中创建最简单的代理来在 ElasticSearch 节点上执行搜索。代理存在的唯一原因是 "hide" 来自 API 端点的凭据和抽象 ES。
使用Nest.ElasticClient,有没有办法执行原始字符串查询?
在普通 ES 中有效的示例查询:
{
"query": {
"fuzzy": { "title": "potato" }
}
}
在我的 API 中,我尝试将原始字符串反序列化为 SearchRequest,但它失败了。我假设它无法反序列化该字段:
var req = m_ElasticClient.Serializer.Deserialize<SearchRequest>(p_RequestBody);
var res = m_ElasticClient.Search<T>(req);
return m_ElasticClient.Serializer.SerializeToString(res);
System.InvalidCastException: Invalid cast from 'System.String' to 'Newtonsoft.Json.Linq.JObject'.
有没有办法将原始字符串查询转发到 ES 并 return 字符串响应?我尝试使用 LowLevel.Search 方法但没有成功。
是的,你可以用 NEST 做到这一点,查看以下内容
var searchResponse = client.Search<object>(s => s
.Type("type").Query(q => q.Raw(@"{""match_all"":{}}")));
希望对您有所帮助。
NEST 不支持反序列化 Elasticsearch Query DSL 的 "field_name" : "your_value"
的短格式,但它支持长格式 "field_name" : { "value" : "your_value" }
,因此下面的工作
var client = new ElasticClient();
var json = @"{
""query"": {
""fuzzy"": {
""title"": {
""value"": ""potato""
}
}
}
}";
SearchRequest searchRequest;
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
searchRequest = client.Serializer.Deserialize<SearchRequest>(stream);
}
作为, NEST also supports supplying a raw json string as a query
我正在尝试在 API 中创建最简单的代理来在 ElasticSearch 节点上执行搜索。代理存在的唯一原因是 "hide" 来自 API 端点的凭据和抽象 ES。
使用Nest.ElasticClient,有没有办法执行原始字符串查询? 在普通 ES 中有效的示例查询:
{
"query": {
"fuzzy": { "title": "potato" }
}
}
在我的 API 中,我尝试将原始字符串反序列化为 SearchRequest,但它失败了。我假设它无法反序列化该字段:
var req = m_ElasticClient.Serializer.Deserialize<SearchRequest>(p_RequestBody);
var res = m_ElasticClient.Search<T>(req);
return m_ElasticClient.Serializer.SerializeToString(res);
System.InvalidCastException: Invalid cast from 'System.String' to 'Newtonsoft.Json.Linq.JObject'.
有没有办法将原始字符串查询转发到 ES 并 return 字符串响应?我尝试使用 LowLevel.Search 方法但没有成功。
是的,你可以用 NEST 做到这一点,查看以下内容
var searchResponse = client.Search<object>(s => s
.Type("type").Query(q => q.Raw(@"{""match_all"":{}}")));
希望对您有所帮助。
NEST 不支持反序列化 Elasticsearch Query DSL 的 "field_name" : "your_value"
的短格式,但它支持长格式 "field_name" : { "value" : "your_value" }
,因此下面的工作
var client = new ElasticClient();
var json = @"{
""query"": {
""fuzzy"": {
""title"": {
""value"": ""potato""
}
}
}
}";
SearchRequest searchRequest;
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
searchRequest = client.Serializer.Deserialize<SearchRequest>(stream);
}
作为