c# - Elasticsearch 查询使字符串匹配不区分大小写

标签 c# elasticsearch nest

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不同。
(所有这些都应该相同)。

我怎样才能做到这一点?

最佳答案

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

关于c# - Elasticsearch 查询使字符串匹配不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723152/

相关文章:

c# - 搜索功能概念

c# - Microsoft OWIN 测试服务器设置 cookie

c# - .NET 中是否存在弱引用?

docker - 从tomcat docker容器收集tomcat日志到Filebeat docker容器

c# - 什么是用于加载系统配置属性的 .net 层次结构

elasticsearch - 在Elasticsearch中如何确定_doc参数的值?它是根据插入顺序排序的吗?

java - 索引到 800 GB 集群时出现 GC 暂停和 OOM 错误

elasticsearch - Elasticsearch-术语为空?

c# - 如何通过 NEST c# 将列表索引到 elasticsearch

c# - NEST ElasticSearch C# 如何过滤嵌套对象