通过动态映射为所有浮点值设置index = false

时间:2016-11-24 16:44:08

标签: elasticsearch

我想设置映射,以便float类型的任何未知字段自动获得属性index = false。

我使用了以下请求:

PUT /myindex/_mapping/mytype
{
    "dynamic_templates": [
      { "quantity": {
        "match": "*", 
        "match_mapping_type": "float",
        "mapping": {
          "index": "false"
        }
      }}
    ],
    "properties": {
      "ELEMENT_ID": {
        "type": "long",
        "index": "true"
      },
      "ELEMENT_TYPE": {
        "type": "keyword",
        "index": "true"
      }
    }
}

然而,未知字段仍然可搜索:

GET /myindex/mytype/_search
{
  "query": {
    "term": { "FEEDBACK_I": "0.8202897" }
  }
}

有可能实现这个目标吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我建议使用这种方法(ES更有可能将您的浮点数与double匹配)。而且,index属性在1.x和2.x中的允许值为no,在5.x中的true / false允许值为

PUT /myindex/mytype/_mapping
{
  "mytype": {
    "dynamic_templates": [
      {
        "quantity": {
          "match": "*",
          "match_mapping_type": "double",
          "mapping": {
            "type": "double",
            "index": "no"
          }
        }
      },
      {
        "quantity_float": {
          "match": "*",
          "match_mapping_type": "float",
          "mapping": {
            "type": "float",
            "index": "no"
          }
        }
      }
    ]
  }
}