1

我正在尝试设置一个电子邮件字段以在我的映射中正确索引。

因为我不希望电子邮件在被索引时被标记,所以我之前指定了以下映射以允许它仅在整个字符串匹配时匹配搜索。

{
  "users": {
    "mappings": {
      "user": {
        "properties": {
          "email": {
            "type": "string",
            "index": "not_analyzed"
          },
          "name": {
            "type": "string",
            "fields": {
              "raw": {
                "type": "string",
                "index": "not_analyzed"
              }
            }
          },
          "nickname": {
            "type": "string"
          }
        }
      }
    }
  }
}

除了我希望将电子邮件昵称字段作为小写进行比较之外,这是可行的。

我尝试了几种方法来指定更改映射以使用小写标记过滤器。

我用以下方法做到了这一点:

{
  "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 是用于搜索和排序的多字段,使用小写
  • 昵称比较小写
4

1 回答 1

3

您可以尝试以下方法,看看是否符合您的要求 - {

  "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"
           }
        }
     }
  }
}
于 2015-01-17T17:10:20.467 回答