为什么elasticsearch的嵌套低级搜索方法忽略了searchdescriptor< >()对象中定义的类型和索引名

bfnvny8b  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(326)

嵌套/elasticsearch.netversion:5.6.5
ElasticSearchversion:5.4.3
我们正在尝试使用lowlevelclient从索引中获取结果。我们正在使用下面的 SearchAsync 应用程序编程接口

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

这也给了我来自其他索引的结果(来自不同索引的结果的组合),我的反序列化正在中断。客户端正在忽略类型和索引名以及调用post /_search api而不是post /myindex/mytype/_search 论ElasticSearch
注:
我们需要调用一个较低级别的客户机,因为我们正在使用一个定制的反序列化程序来提高性能
这里有什么问题?

mbskvtky

mbskvtky1#

找到了解决方法
这个 SearchAsync<>() 方法重载了方法 _client.LowLevel.SearchAsync<T>(string indexName, string typeName, T t) 传递索引名和类型名将缩小到该特定索引的搜索范围。
但问题仍然存在,为什么它不从 SearchDescriptor 对象。

相关问题