据我所知,不可能在类型名称中指定通配符,但是您可以做一些技巧。
您可以在索引中查询具有特定ID的文档,并使用前缀过滤器来缩小对某些类型的搜索范围。
var searchResponse = client.Search<dynamic>(s => s .Type(string.Empty) .Query(q => q.Term("id", 1)) .Filter(f => f.Prefix("_type", "type")));这是完整的示例:
class Program{ static void Main(string[] args) { var indexName = "sampleindex"; var uri = new Uri("http://localhost:9200"); var settings = new ConnectionSettings(uri).SetDefaultIndex(indexName).EnableTrace(); var client = new ElasticClient(settings); client.DeleteIndex(descriptor => descriptor.Index(indexName)); client.CreateIndex(descriptor => descriptor.Index(indexName)); client.Index(new Type1 {Id = 1, Name = "Name1"}, descriptor => descriptor.Index(indexName)); client.Index(new Type1 {Id = 11, Name = "Name2"}, descriptor => descriptor.Index(indexName)); client.Index(new Type2 {Id = 1, City = "City1"}, descriptor => descriptor.Index(indexName)); client.Index(new Type2 {Id = 11, City = "City2"}, descriptor => descriptor.Index(indexName)); client.Index(new OtherType2 {Id = 1}, descriptor => descriptor.Index(indexName)); client.Refresh(); var searchResponse = client.Search<dynamic>(s => s .Type(string.Empty) .Query(q => q.Term("id", 1)) .Filter(f => f.Prefix("_type", "type"))); var objects = searchResponse.documents.ToList(); }}class Type1{ public int Id { get; set; } public string Name { get; set; }}class Type2{ public int Id { get; set; } public string City { get; set; }}class OtherType2{ public int Id { get; set; }}对全局没有太多了解,但是也许您可以更改解决方案以使用索引而不是类型?您可以将通配符放在索引名称中。



