将每个属性类型设置为not_analyzed为自定义对象

Ste*_*hen 3 elasticsearch

我有一个自定义对象,我希望将其存储在ElasticSearch中作为索引中自己的类型,但我不希望对象中的任何字段进行分析.我应该怎么做呢?

我一直在使用ElasticSearch NEST客户端,但也可以根据需要手动创建映射.

pic*_*ypg 6

你有几个选项可以工作.就个人而言,我会选择前两个中的任何一个.如果它是每日索引,则第二个是更好的选择.

  • 预先定义映射并禁用动态字段.这是迄今为止最安全的方法,它可以帮助您避免错误,并且可以防止以后添加字段.

    {
      "mappings": {
        "_default_": {
          "_all": {
            "enabled": false
          }
        },
        "mytype" : {
          "dynamic" : "strict",
          "properties" : {
            ...
          }
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 创建索引模板禁用动态领域,而且可以持续不断地用相同的映射(S)推出新的指数.

    您可以创建分层索引模板,以便多个应用于任何给定索引.

    {
      "template": "mytimedindex-*", 
      "settings": {
        "number_of_shards": 2
      },
      "mappings": {
        "_default_": {
          "_all": {
            "enabled": false
          }
        },
        "mytype" : {
          "dynamic" : "strict",
          "properties" : {
            ...
          }
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 创建动态映射,允许新的领域,但默认所有的strings到not_analyzed:

    "dynamic_templates" : [ {
      "strings" : {
        "mapping" : {
          "index" : "not_analyzed",
          "type" : "string"
        },
        "match" : "*",
        "match_mapping_type" : "string"
      }
    } ]
    
    Run Code Online (Sandbox Code Playgroud)

    这将允许您动态地向映射添加字段.