弹性搜索查询使字符串匹配不区分大小写
本文关键字:串匹配 不区 大小写 字符串 字符 搜索 查询 | 更新日期: 2023-09-27 18:29:45
filterInputs.profileId="d12";
var results = client
.Search<StockBaseEntity>(s => s
.Type("item")
.Take(1000)
.Filter(f => f
.Bool(bb => bb
.Must(ms =>
{
return
!ms.Term("profileId", filterInputs.profileId)
})))
.Sort(so => so.OnField("sortScore").Ascending())
);
"profileId"可以是小写、大写或混合体。无论情况如何,我都希望返回结果。
我该怎么做?
目前,其治疗d123与d123不同。或者da不同于da,不同于da。(所有这些都应该相同)。
我该怎么做?
如果您正在使用字段profileId
的standard
分析器(我想您不会问这个问题),那么这些值将以小写形式存储在Elasticsearch索引中。您需要将filterInputs.profileId
的值小写,并将其传递到Term()
筛选器中。
var results = client.Search<StockBaseEntity>(s => s
.Type("item")
.Take(1000)
.Filter(f => f
.Bool(bb => bb
.Must(ms =>
{
return !ms.Term("profileId", filterInputs.profileId.ToLowerInvariant());
})))
.Sort(so => so.OnField("sortScore").Ascending()));