Elasticsearch搜索具有不区分大小写的字段的精确值

时间:2017-03-13 15:20:03

标签: c# elasticsearch nest

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

1 个答案:

答案 0 :(得分:1)

如果在编制索引时选择not analyzed,则Elastic不会在索引时分析这些术语,这意味着它们会逐字存储。因此,当您查询时,由于查询字词与存储的字段不匹配,因此无法获得结果。

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

如果可用的分析仪都不适合您,您可以通过指定要应用的过滤器来定义自定义分析仪。例如,仅使用lowercase过滤器,Elastic会将RegisteredPaymentType字段编入索引。然后,在查询时,同一个分析器将应用于查询,您将获得期望的结果。