美文网首页
Elasticsearch映射配置

Elasticsearch映射配置

作者: Splunker | 来源:发表于2020-03-16 14:45 被阅读0次

映射介绍

映射是定义存储和索引的文档及其包含的字段的过程。 例如,使用映射来定义:

  • 应将哪些字符串字段视为全文字段。
  • 哪些字段包含数字,日期或地理位置。
  • 日期值的格式。
  • 用于控制动态添加字段的映射的自定义规则。

(1)映射配置
我们已经知道在创建索引时,可以添加settings相关参数

PUT blog
{
    "settings" : {
        "number_of_shards" : 2,
        "number_of_replicas" : 2
    }
}

在创建索引时,还可以进行映射配置,可以在映射中实现定义文档的字段类型、分词器等属性。

PUT book
{
  "settings" : {
        "number_of_shards" : 2,
        "number_of_replicas" : 2
  },
  "mappings": {
    "_doc": {
      "properties": {
        "title": { "type": "text" }, 
        "price": { "type": "integer" }
      }
    }
  }
}

其中,mappings表示映射配置,_doc是唯一的type名(也是官方推荐的名字),properties表示文档包含的属性字段(第1个字段是text类型的title标题,第2个字段是integer类型的price价格)。响应结果如下:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "book"
}

查看索引

GET book
{
  "book" : {
    "aliases" : { },
    "mappings" : {
      "_doc" : {
        "properties" : {
          "price" : {
            "type" : "integer"
          },
          "title" : {
            "type" : "text"
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "creation_date" : "1547105358927",
        "number_of_shards" : "2",
        "number_of_replicas" : "2",
        "uuid" : "4j_jq8S_TG2tX27UoSCrGQ",
        "version" : {
          "created" : "7000099"
        },
        "provided_name" : "book"
      }
    }
  }
}

(2)删除type
从Elasticsearch 5.6开始,逐步删除type。 在Elasticsearch 7.x版本中提供了include_type_name=false参数,为升级8.0做好准备。索引创建,映射和文档API支持include_type_name选项。 设置为false时,此选项将启用在删除类型时将成为8.0中的默认行为。

DELETE book
PUT book?include_type_name=false
{
  "mappings": {
      "properties": {
        "title": { "type": "text" }, 
        "price": { "type": "integer" }
      }
  }
}
GET book/_mappings?include_type_name=false
{
  "book" : {
    "mappings" : {
      "properties" : {
        "price" : {
          "type" : "integer"
        },
        "title" : {
          "type" : "text"
        }
      }
    }
  }
}

在Elasticsearch 7.0版本中,依然需要使用{index}/_doc形式添加文档自动生成id,以{index}/_doc/{id}形式显式指定id添加文档;

PUT book/_doc/1
{
   "title":"Java面向对象程序设计",
   "price":40
}
12345
GET book/_doc/1
1
{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "title" : "Java面向对象程序设计",
    "price" : 40
  }
}

在Elasticsearch 7.0版本中,GET、DELETE、_update和_search等API请求将继续返回一个_type键,但它被认为已弃用,将在Elasticsearch 8.0中删除。

字段类型

Elasticsearch支持文档中字段的许多不同数据类型。

  • 核心类型
    • 字符串类型:text,keyword
    • 数字类型:ong, integer, short, byte, double, float, half_float, scaled_float
    • 日期类型:date
    • 布尔类型:boolean
    • 二进制类型:binary
    • 范围类型:integer_range, float_range, long_range, double_range, date_range
  • 复合类型
    • 数组类型:array
    • 对象类型:object
    • 嵌套类型:nested
  • 地理类型
    • 地理坐标类型:geo_point
    • 地理图形类型:geo_shape
  • 专门类型
    • IP类型:ip
    • 完成类型:completion
    • 令牌计数器类型:token_count

相关文章

网友评论

      本文标题:Elasticsearch映射配置

      本文链接:https://www.haomeiwen.com/subject/awmgehtx.html