弹性搜索查询使字符串匹配不区分大小写

本文关键字:串匹配 不区 大小写 字符串 字符 搜索 查询 | 更新日期: 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。(所有这些都应该相同)。

我该怎么做?

弹性搜索查询使字符串匹配不区分大小写

如果您正在使用字段profileIdstandard分析器(我想您不会问这个问题),那么这些值将以小写形式存储在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()));