【发布时间】:2020-11-16 07:08:51
【问题描述】:
我正在尝试使用 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 查询方法搜索字符串字段
【问题讨论】:
标签: c# elasticsearch .net-core nest elasticsearch.net