How to not-analyze in ElasticSearch?

前端 未结 3 1036
攒了一身酷
攒了一身酷 2020-11-30 01:29

I\'ve got a field in an ElasticSearch field which I do not want to have analyzed, i. e. it should be stored and compared verbatim. The values will contain letters, numbers,

相关标签:
3条回答
  • 2020-11-30 02:05
    "my_field2": {
        "properties": {
            "title": {
                "type": "string",
                "index": "not_analyzed"
            }
        }
    }
    

    Check you here, https://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-core-types.html, for further info.

    0 讨论(0)
  • 2020-11-30 02:07

    This is no longer true due to the removal of the string (replaced by keyword and text) type as described here. Instead you should use keyword type with "index": true | false.

    For Example OLD:

    {
      "foo": {
        "type" "string",
        "index": "not_analyzed"
      }
    }
    

    becomes NEW:

    {
      "foo": {
        "type" "keyword",
        "index": true
      }
    }
    

    This means the field is indexed but as it is typed as keyword not analyzed implicitly. If you would like to have the field analyzed, you need to use text type.

    0 讨论(0)
  • 2020-11-30 02:22

    keyword analyser can be also used.

    // don't actually use this, use "index": "not_analyzed" instead
    {
      "my_type": {
        "properties": {
          "my_field1": { "type": "string", "analyzer": "english" },
          "my_field2": { "type": "string", "analyzer": "keyword" }
        }
      }
    }
    

    As noted here: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-keyword-analyzer.html, it makes more sense to mark those fields as not_analyzed.

    But keyword analyzer can be useful when it is set by default for whole index.

    UPDATE: As it said in comments, string is no longer supported in 5.X

    0 讨论(0)
提交回复
热议问题