zoukankan      html  css  js  c++  java
  • elasticsearch的mapping

    PUT /website/article/1

    {

      "post_date": "2017-01-01",

      "title": "my first article",

      "content": "this is my first article in this website",

      "author_id": 11400

    }

    执行上面的语句,es会创建type对应的mappingmapping中包含了每个field对应的数据类型。

    GET /website/_mapping/article

    响应:

    {

      "website": {

        "mappings": {

          "article": {

            "properties": {

              "author_id": {

                "type": "long"

              },

              "content": {

                "type": "text",

                "fields": {

                  "keyword": {

                    "type": "keyword",

                    "ignore_above": 256

                  }

                }

              },

              "post_date": {

                "type": "date"

              },

              "title": {

                "type": "text",

                "fields": {

                  "keyword": {

                    "type": "keyword",

                    "ignore_above": 256

                  }

                }

              }

            }

          }

        }

      }

    }

    1exact value

    2017-01-01exact value,搜索的时候,必须输入2017-01-01,才能搜索出来

    如果你输入一个01,是搜索不出来的

    2full text  全文检索

    1)缩写 vs. 全程:cn vs. china

    2)格式转化:like liked likes

    3)大小写:Tom vs tom

    4)同义词:like vs love

    china,搜索cn,也可以将china搜索出来

    likes,搜索like,也可以将likes搜索出来

    Tom,搜索tom,也可以将Tom搜索出来

    like,搜索love,同义词,也可以将like搜索出来

    就不是说单纯的只是匹配完整的一个值,而是可以对值进行拆分词语后(分词)进行匹配,也可以通过缩写、时态、大小写、同义词等进行匹配。

    3、数据类型

    1、核心的数据类型

    string

    byteshortintegerlong

    floatdouble

    boolean

    date

    2dynamic mapping

    true or false --> boolean

    123 --> long

    123.45 --> double

    2017-01-01 --> date

    "hello world" --> string/text

    3、查看mapping

    GET /index/_mapping/type

    4、如何建立索引

    1、如何建立索引

    analyzed

    not_analyzed

    no

    2、修改mapping

    只能创建index时手动建立mapping,或者新增field mapping,但是不能update field mapping

    PUT /website

    {

      "mappings": {

        "article": {

          "properties": {

            "author_id": {

              "type": "long"

            },

            "title": {

              "type": "text",

              "analyzer": "english"

            },

            "content": {

              "type": "text"

            },

            "post_date": {

              "type": "date"

            },

            "publisher_id": {

              "type": "text",

              "index": "not_analyzed"   //not_analyzed

            }

          }

        }

      }

    }

    不能update field mapping

    PUT /website

    {

      "mappings": {

        "article": {

          "properties": {

            "author_id": {

              "type": "text"

            }

          }

        }

      }

    }

    {

      "error": {

        "root_cause": [

          {

            "type": "index_already_exists_exception",

            "reason": "index [website/co1dgJ-uTYGBEEOOL8GsQQ] already exists",

            "index_uuid": "co1dgJ-uTYGBEEOOL8GsQQ",

            "index": "website"

          }

        ],

        "type": "index_already_exists_exception",

        "reason": "index [website/co1dgJ-uTYGBEEOOL8GsQQ] already exists",

        "index_uuid": "co1dgJ-uTYGBEEOOL8GsQQ",

        "index": "website"

      },

      "status": 400

    }

    //建立一个新的field并指定mapping

    PUT /website/_mapping/article

    {

      "properties" : {

        "new_field" : {

          "type" :    "string",

          "index":    "not_analyzed"

        }

      }

    }

    3、测试mapping

    GET /website/_analyze

    {

      "field": "content",

      "text": "my-dogs"

    }

    GET website/_analyze

    {

      "field": "new_field",

      "text": "my dogs"

    }

    //下面报错是因为new_field不允许分词

    {

      "error": {

        "root_cause": [

          {

            "type": "remote_transport_exception",

            "reason": "[4onsTYV][127.0.0.1:9300][indices:admin/analyze[s]]"

          }

        ],

        "type": "illegal_argument_exception",

        "reason": "Can't process field [new_field], Analysis requests are only supported on tokenized fields"

      },

      "status": 400

    }

  • 相关阅读:
    Codeforces 17.E Palisection
    poj4052 Hrinity
    bzoj2565 最长双回文串
    Java基础知识强化之集合框架笔记43:Set集合之TreeSet存储Integer类型的元素并遍历
    Java基础知识强化之集合框架笔记42:Set集合之LinkedHashSet的概述和使用
    Java基础知识强化之集合框架笔记41:Set集合之HashSet存储自定义对象并遍历练习
    Java基础知识强化之集合框架笔记40:Set集合之HashSet存储自定义对象并遍历
    TCP/IP协议原理与应用笔记13:底层网络技术之传输介质
    Java基础知识强化之集合框架笔记39:Set集合之HashSet存储字符串并遍历
    Java基础知识强化之集合框架笔记38:Set集合之Set集合概述和特点
  • 原文地址:https://www.cnblogs.com/kesimin/p/9559963.html
Copyright © 2011-2022 走看看