无法在 ElasticSearch 中正确索引电子邮件字段
Can't get email field to index correctly in ElasticSearch
我正在尝试设置一个电子邮件字段以在我的映射中正确编制索引。
因为我不希望 email 在被索引时被标记化,所以我之前指定了以下映射以允许它仅在整个字符串匹配时匹配搜索。
{
"users": {
"mappings": {
"user": {
"properties": {
"email": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string"
}
}
}
}
}
}
除了我希望将 email 和 nickname 字段作为小写进行比较外,此方法有效。
我尝试了几种方法来指定更改映射以使用小写标记过滤器。
我用以下方法完成了此操作:
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"lowercase_analyzer":{
"tokenizer":"standard", //Also tried 'Simple' and 'Keyword'
"filter":"lowercase"
}
}
}
}
},
"mappings": {
"user": {
"properties": {
"email": {
"type": "string",
"analyzer":"lowercase_analyzer",
"index": "not_analyzed" //Tried with and without this
},
"name": {
"type": "string",
"analyzer":"lowercase_analyzer",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string",
"analyzer": "lowercase_analyzer"
}
}
}
}
}
我希望允许以下行为:
- 可以搜索和比较小写的电子邮件,并且只有在整个电子邮件匹配时才匹配
- name是一个多字段,用于搜索和排序,使用小写字母
- 昵称比较小写
您能否尝试以下操作,看看是否符合您的要求 -
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"flat":{
"tokenizer":"keyword",
"filter":"lowercase"
}
}
}
}
},
"mappings": {
"user": {
"properties": {
"email": {
"type": "string",
"analyzer":"flat"
},
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string"
}
}
}
}
}
我正在尝试设置一个电子邮件字段以在我的映射中正确编制索引。
因为我不希望 email 在被索引时被标记化,所以我之前指定了以下映射以允许它仅在整个字符串匹配时匹配搜索。
{
"users": {
"mappings": {
"user": {
"properties": {
"email": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string"
}
}
}
}
}
}
除了我希望将 email 和 nickname 字段作为小写进行比较外,此方法有效。
我尝试了几种方法来指定更改映射以使用小写标记过滤器。
我用以下方法完成了此操作:
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"lowercase_analyzer":{
"tokenizer":"standard", //Also tried 'Simple' and 'Keyword'
"filter":"lowercase"
}
}
}
}
},
"mappings": {
"user": {
"properties": {
"email": {
"type": "string",
"analyzer":"lowercase_analyzer",
"index": "not_analyzed" //Tried with and without this
},
"name": {
"type": "string",
"analyzer":"lowercase_analyzer",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string",
"analyzer": "lowercase_analyzer"
}
}
}
}
}
我希望允许以下行为:
- 可以搜索和比较小写的电子邮件,并且只有在整个电子邮件匹配时才匹配
- name是一个多字段,用于搜索和排序,使用小写字母
- 昵称比较小写
您能否尝试以下操作,看看是否符合您的要求 - {
"settings":{
"index":{
"analysis":{
"analyzer":{
"flat":{
"tokenizer":"keyword",
"filter":"lowercase"
}
}
}
}
},
"mappings": {
"user": {
"properties": {
"email": {
"type": "string",
"analyzer":"flat"
},
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"nickname": {
"type": "string"
}
}
}
}
}