在ElasticSearch中,要实现查询时忽略大小写,可以通过设置字段的index
属性为not_analyzed
并结合lowercase
过滤器来实现。以下是一个创建索引的例子,其中将字段设置为不分析并且转换为小写:
PUT /my_index
{
"mappings": {
"my_type": {
"properties": {
"my_field": {
"type": "string",
"index": "not_analyzed",
"normalizer": "my_lowercase_normalizer"
}
},
"normalizers": {
"my_lowercase_normalizer": {
"type": "custom",
"filter": ["lowercase"]
}
}
}
}
}
在这个例子中,my_field
字段在被索引时会被转换为全小写。现在,当你执行查询时,无论文档中的大小写如何,都会被正确匹配。例如:
GET /my_index/_search
{
"query": {
"match": {
"my_field": "TEXT"
}
}
}
无论文档中的my_field
字段是"text"、"Text"、"TEXT"还是其他大小写形式,上述查询都会找到包含"TEXT"的所有文档。