elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# Elasticsearch搜索字段的精确值,不区分大小写

C# Elasticsearch搜索字段的精确值,不区分大小写,c#,elasticsearch,nest,C#,elasticsearch,Nest,如何在elasticsearch字段中按其精确值进行搜索,但不区分大小写查询? 例如,我有一个值为{“Type”的字段:“Płatnośćkartą”}, 我的查询将按值“płatnośćkartą”进行搜索。我需要能够通过字符串参数列表(即“płatnośćkartą”、“płatnośćgotówką”等)进行搜索。我尝试了弹性术语查询,但当出现敏感大小写差异时,它没有返回值。字段索引设置为未分析。如果在索引时选择了未分析,则Elastic不会在索引时分析这些术语,这意味着它们是逐字存储的。

如何在elasticsearch字段中按其精确值进行搜索,但不区分大小写查询? 例如,我有一个值为{“Type”的字段:“Płatnośćkartą”},
我的查询将按值“płatnośćkartą”进行搜索。我需要能够通过字符串参数列表(即“płatnośćkartą”、“płatnośćgotówką”等)进行搜索。我尝试了弹性术语查询,但当出现敏感大小写差异时,它没有返回值。字段索引设置为未分析。

如果在索引时选择了
未分析
,则Elastic不会在索引时分析这些术语,这意味着它们是逐字存储的。因此,当您进行查询时,不会得到任何结果,因为查询条件与存储的字段不匹配

为了能够使用小写进行查询并获得大写结果,您需要在映射上使用
分析器。以下是中的可用选项


如果没有适合您的可用分析器,则可以通过指定要应用的过滤器来定义自定义分析器。例如,仅使用
lowercase
过滤器,Elastic将对
RegisteredPaymentType
字段编制小写索引。然后,在查询时,相同的分析器将应用于查询,您将得到预期的结果。

我已将分析器更改为simple,现在我有一个映射{“Type”:{“Type”:“string”,“analyzer”:“simple”},但当我尝试使用术语搜索文本“platnośćw drodze”时,我没有得到结果。当我只搜索一个单词时,例如“platność”,我会得到许多预期的结果。我做错了什么?更改映射后是否重新索引了数据?除此之外,你还认为“L”和“Y”是同一个字符吗?简单分析器可能无法处理这种差异。是的。如果使用simple analyzer,它会使用一个标记器(它将通过拆分为空空间来创建术语,这样您将得到树术语“platność”、“w”、“drodze”),当您请求术语时,您将得到所需的术语。使用简单的字段,我的东西可以匹配短语,但若你们想使用AnalyzsisAPI,你们需要了解更多。