我正在尝试使用 NEST 根据用户的输入动态创建搜索查询。我想在带有 Term 的过滤器中添加多个过滤器,但无法搜索字符串字段,我找不到任何解决方案。
例如代码是,此代码尝试搜索字符串字段,但它不起作用
var response = await _elasticClient.SearchAsync<CustomerAddressInfo>(p => p
.Query(q => q
.Bool(b => b
.Filter(f => f.Term(t => t.Field(p => p.AccountAddressId).Value(type.AccountAddressId)))
)
)
);
另一个简单的搜索是使用整数字段,它正在成功
var response = await _elasticClient.SearchAsync<CustomerAddressInfo>(p => p
.Query(q => q
.Bool(b => b
.Filter(f => f.Term(t => t.Field(p => p.CreateUnitId).Value(type.CreateUnitId)))
)
)
);
但; 如果我使用 Match 关键字搜索字符串字段上的数据,则再次搜索成功
var response = await _elasticClient.SearchAsync<CustomerAddressInfo>(p => p
.Query(q => q
.Match(m => m
.Field(f => f.AccountAddressId)
.Query(type.AccountAddressId)
)
)
);
问题是,如何使用 Match 查询方法提供多个搜索条件,或者如何通过弹性上的 Term 查询方法搜索字符串字段