如何在Elasticsearch字段中按其确切值但不区分大小写的查询进行搜索?
例如,我有一个值为{“Type”:“Płatnośćkartą”}的字段,
并且我的查询将按值“płatnośćkartą”进行搜索。我需要能够通过字符串参数列表进行搜索(例如“płatnośćkartą”,“płatnośćgotówką”等)。我尝试了 flex TERMS查询,但是当出现区分大小写的差异时,它没有返回值。字段索引设置为not_analyzed。
最佳答案
如果在编制索引时选择not analyzed
,Elastic不会在编制索引时分析这些术语,这意味着它们是逐字存储的。因此,当您进行查询时,由于查询词与存储的字段不匹配,因此无法获得任何结果。
为了能够以小写查询并获得大写结果,您还需要在映射上使用analyzer
。以下是docs中的可用选项。
如果没有可用的分析器适合您,则可以通过指定要应用的过滤器来定义自定义分析器。例如,仅使用lowercase
过滤器,Elastic会将小写的RegisteredPaymentType
字段编入索引。然后,在查询时,同一分析器将应用于查询,您将获得预期的结果。
关于c# - Elasticsearch搜索不区分大小写的字段的确切值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42767245/