Elasticsearch映射配置

2020-03-16  本文已影响0人  Splunker

映射介绍

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

(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支持文档中字段的许多不同数据类型。

上一篇 下一篇

猜你喜欢

热点阅读