为什么 elasticsearch 的嵌套低级搜索方法忽略 SearchDescriptor<>() 对象中定义的类型和索引名称
Why is elasticsearch's Nest lowlevel Search method ignoring type and index name defined in SearchDescriptor<>() object
NEST/Elasticsearch.Net version:5.6.5
Elasticsearch version:5.4.3
我们正在尝试使用 LowLevelClient 从我们的索引中获取结果。我们正在使用下面的 SearchAsync
API
var searchDescriptor = new SearchDescriptor<MyType>()
.Type("mytype")
.Index("myindex")
.Query(....)
.Aggregation(ag => ag.Terms(... Aggregation(ag1 => ag1.Min(...TopHits(...)))));
var memoryStream = new MemoryStream();
_client.Serializer.Serialize(searchDescriptor, memoryStream);
var response = await _client.LowLevel.SearchAsync<byte[]>(memoryStream.ToArray()).ConfigureAwait(false);
//_client - instance of Nest.ElasticClient
//Next Step - Deserialize the response
这也给了我其他索引的结果(各种索引的结果的组合),我的反序列化正在中断。客户端忽略类型和索引名称并在 elastic search
上调用 POST /_search
API 而不是 POST /myindex/mytype/_search
注:
- 我们需要调用较低级别的客户端,因为我们正在使用自定义解串器来解决性能问题
这里有什么问题?
找到解决方法
SearchAsync<>()
方法有重载方法_client.LowLevel.SearchAsync<T>(string indexName, string typeName, T t)
传递索引名称和类型名称将缩小搜索到该特定索引的范围。
但问题仍然存在,为什么它不从 SearchDescriptor
对象中获取索引和类型名称。
NEST/Elasticsearch.Net version:5.6.5
Elasticsearch version:5.4.3
我们正在尝试使用 LowLevelClient 从我们的索引中获取结果。我们正在使用下面的 SearchAsync
API
var searchDescriptor = new SearchDescriptor<MyType>()
.Type("mytype")
.Index("myindex")
.Query(....)
.Aggregation(ag => ag.Terms(... Aggregation(ag1 => ag1.Min(...TopHits(...)))));
var memoryStream = new MemoryStream();
_client.Serializer.Serialize(searchDescriptor, memoryStream);
var response = await _client.LowLevel.SearchAsync<byte[]>(memoryStream.ToArray()).ConfigureAwait(false);
//_client - instance of Nest.ElasticClient
//Next Step - Deserialize the response
这也给了我其他索引的结果(各种索引的结果的组合),我的反序列化正在中断。客户端忽略类型和索引名称并在 elastic search
上调用 POST/_search
API 而不是 POST /myindex/mytype/_search
注:
- 我们需要调用较低级别的客户端,因为我们正在使用自定义解串器来解决性能问题
这里有什么问题?
找到解决方法
SearchAsync<>()
方法有重载方法_client.LowLevel.SearchAsync<T>(string indexName, string typeName, T t)
传递索引名称和类型名称将缩小搜索到该特定索引的范围。
但问题仍然存在,为什么它不从 SearchDescriptor
对象中获取索引和类型名称。