我知道 ElasticSearch 默认不区分大小写,我们可以使用映射来强制区分大小写。
但是,我的要求是我需要在不区分大小写和区分大小写的字段之间切换。我应该如何解决这个问题。
答案 0 :(得分:1)
您可以使用 multi-fields 为区分大小写和不区分大小写的搜索索引同一字段。
添加一个包含索引数据、映射、搜索查询和搜索结果的工作示例
索引映射:
df.fillna(df.mean)
类型字段使用标准分析器(可用于不区分大小写搜索),text
字段使用关键字分析器(可用于不区分大小写搜索)
keyword
索引数据:
{
"mappings": {
"properties": {
"name": {
"type": "text",
"fields": { // note this
"raw": {
"type": "keyword"
}
}
}
}
}
}
区分大小写搜索的搜索查询:
{
"name": "john"
}
{
"name": "JOHN"
}
搜索结果:
{
"query": {
"match": {
"name.raw": "JOHN"
}
}
}
不区分大小写搜索的搜索查询:
"hits": [
{
"_index": "66679730",
"_type": "_doc",
"_id": "1",
"_score": 0.6931471,
"_source": {
"name": "JOHN"
}
}
]
搜索结果将是
{
"query": {
"match": {
"name": "JOHN"
}
}
}