zoukankan      html  css  js  c++  java
  • elasticsearch _mapping api

    https://www.elastic.co/guide/cn/elasticsearch/guide/current/mapping-intro.html
    通过 /_mapping ,我们可以查看 Elasticsearch 在一个或多个索引中的一个或多个类型的映射 。

    GET /gb/tweet/_mapping
    {
       "gb": {
          "mappings": {
             "tweet": {
                "properties": {
                   "date": {
                      "type": "date",
                      "format": "strict_date_optional_time||epoch_millis"
                   },
                   "name": {
                      "type": "string"
                   },
                   "tweet": {
                      "type": "string"
                   },
                   "user_id": {
                      "type": "long"
                   }
                }
             }
          }
       }
    }

    自定义域映射
    尽管在很多情况下基本域数据类型 已经够用,但你经常需要为单独域自定义映射 ,特别是字符串域。自定义映射允许你执行下面的操作:
    全文字符串域和精确值字符串域的区别
    使用特定语言分析器
    优化域以适应部分匹配
    指定自定义数据格式

    域最重要的属性是 type 。对于不是 string 的域,你一般只需要设置 type :
    索引不存在的情况下,创建索引和类型mapping

    PUT /gb
    {
      "mappings": {
        "tweet" : {
          "properties" : {
            "tweet" : {
              "type" :    "string",
              "analyzer": "english"
            },
            "date" : {
              "type" :   "date"
            },
            "name" : {
              "type" :   "string"
            },
            "user_id" : {
              "type" :   "long"
            }
          }
        }
      }
    }

    给某个类型创建mapping,可以用来插入列

    PUT /gb/tweet/_mapping
    {
        "properties": {
            "number_of_clicks": {
                "type": "integer"
            }
        }
    } 


    默认, string 类型域会被认为包含全文。就是说,它们的值在索引前,会通过 一个分析器,针对于这个域的查询在搜索前也会经过一个分析器。
    string 域映射的两个最重要 属性是 index 和 analyzer 。
    index 属性控制怎样索引字符串。它可以是下面三个值:
    analyzed
    首先分析字符串,然后索引它。换句话说,以全文索引这个域。
    not_analyzed
    索引这个域,所以它能够被搜索,但索引的是精确值。不会对它进行分析。
    no
    不索引这个域。这个域不会被搜索到。
    string 域 index 属性默认是 analyzed 。如果我们想映射这个字段为一个精确值,我们需要设置它为 not_analyzed :

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


    其他简单类型(例如 long , double , date 等)也接受 index 参数,但有意义的值只有 no 和 not_analyzed , 因为它们永远不会被分析。

    对于 analyzed 字符串域,用 analyzer 属性指定在搜索和索引时使用的分析器。默认, Elasticsearch 使用 standard 分析器, 但你可以指定一个内置的分析器替代它,例如 whitespace 、 simple 和 english:

    {
        "tweet": {
            "type":     "string",
            "analyzer": "english"
        }
    }

    更新映射
    你可以 增加_ 一个存在的映射,你不能 _修改 存在的域映射。如果一个域的映射已经存在,那么该域的数据可能已经被索引。如果你意图修改这个域的映射,索引的数据可能会出错,不能被正常的搜索。
    我们可以更新一个映射来添加一个新域,但不能将一个存在的域从 analyzed 改为 not_analyzed 。

    我们决定在 tweet 映射增加一个新的名为 tag 的 not_analyzed 的文本域,使用 _mapping :

    PUT /gb/tweet/_mapping
    {
      "properties" : {
        "tag" : {
          "type" :    "string",
          "index":    "not_analyzed"
        }
      }
    }
  • 相关阅读:
    最大值和最小值
    GetLevelDesc函数
    21. D3DSprite
    SetFileAttributes和GetFileAttributes
    24. 幕外渲染
    D3D修改view矩阵与修改world矩阵的区别
    23. 保存纹理(保存屏幕截图)
    C++之solmyr小品文
    C++二进制文件写操作
    22. 凸凹贴图
  • 原文地址:https://www.cnblogs.com/gavinYang/p/11199849.html
Copyright © 2011-2022 走看看