c# - Elasticsearch搜索不区分大小写的字段的确切值

标签 c# elasticsearch nest

如何在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/

相关文章:

c# - Kestrel 配置使用特定端口 + url

elasticsearch - 如何使用通配符查询ElasticSearch

json - Elasticsearch:批量请求在 Elasticsearch 6.1.1 中抛出错误

elasticsearch - 尝试过滤一些可能不存在该字段的Elasticsearch结果

elasticsearch - ElasticSearch.Net无法识别ElasticSearch返回的时间戳

c# - 如何删除字符串中的重复字符?

c# - 定期更新 Lucene.net 索引

c# - 检查标签的类型

elasticsearch - Logstash日志中的翻译缺少错误

elasticsearch - 如何使用带有对象初始值设定项语法的Nest进行原始查询?