elasticsearch6.2.4 教程 - 07 - 静态映射 - 2018
原创    iwantyou    发表于:2018-08-09 16:21:18
  阅读 :142   收藏   编辑

上一篇:elasticsearch6.2.4 教程 - 06 - 映射mapping类型 

动态映射是es根据数据自行判断类型,有时这种推断并不是100%正确,这时我们就需要静态映射,如同我们创建数据表一样,先去创建表结构,使用静态映射可以更加详细的字段类型、索引、分词等配置

es6之后的版本,创建索引只允许含有一个类型

一个简单的指定ik分词器的mapping及查询

  • 创建索引

PUT ik_index
{
  "mappings":{
    "blog": {
       "properties": {
          "id": {
            "type": "long",
            "index" : false
          },
          "title": {
            "type": "text", 
            "analyzer" : "ik_max_word",
            "index" : true
          },
          "summary": {
            "type": "text",
            "analyzer" : "ik_max_word",
            "index" : true
            }
       }
    }
  }
}

解释:创建es类型为blog , 含有字段:id , title ,summary  , 其中id不可被索引,title及summary可被索引,并指定了分词器为IK

  • 插入数据

PUT /ik_index/blog/1
{
  "id": 1,
  "title":"自称互联网公司,但旗下的小米音乐更像是一款“防守型”应用",
  "summary":"39. 6 倍市盈率让小米摆脱了硬件公司的“帽子”,硬件公司代表苹果当时市盈率也才 16.1 倍...."
}

PUT /ik_index/blog/2
{
  "id": 2,
  "title":"《英雄联盟》开发商被指性别歧视和性骚扰",
  "summary":"互联网腾讯旗下的《英雄联盟》开发商 Riot Games 被指存在性别歧视和性骚扰的问题。游戏网站 Kotaku 发表长篇调查报告,引用了 28 个消息来源,其中包括前雇员和现雇员...."
}
  • 在单个字段title搜索

GET /ik_index/_search
{
    "query": {
        "match" : {
            "title" : "互联网"
        }
    }
}

返回

{
  "took": 12,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.8630463,
    "hits": [
      {
        "_index": "ik_index",
        "_type": "blog",
        "_id": "1",
        "_score": 0.8630463,
        "_source": {
          "id": 1,
          "title": "自称互联网公司,但旗下的小米音乐更像是一款“防守型”应用",
          "summary": "39. 6 倍市盈率让小米摆脱了硬件公司的“帽子”,硬件公司代表苹果当时市盈率也才 16.1 倍...."
        }
      }
    ]
  }
}
  • 在多个字段上搜索

GET /ik_index/_search
{
  "query": {
    "multi_match" : {
      "query":    "互联网", 
      "fields": [ "title", "summary" ] 
    }
  }
}

返回

{
  "took": 17,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 0.8630463,
    "hits": [
      {
        "_index": "ik_index",
        "_type": "blog",
        "_id": "2",
        "_score": 0.8630463,
        "_source": {
          "id": 2,
          "title": "《英雄联盟》开发商被指性别歧视和性骚扰",
          "summary": "互联网腾讯旗下的《英雄联盟》开发商 Riot Games 被指存在性别歧视和性骚扰的问题。游戏网站 Kotaku 发表长篇调查报告,引用了 28 个消息来源,其中包括前雇员和现雇员...."
        }
      },
      {
        "_index": "ik_index",
        "_type": "blog",
        "_id": "1",
        "_score": 0.8630463,
        "_source": {
          "id": 1,
          "title": "自称互联网公司,但旗下的小米音乐更像是一款“防守型”应用",
          "summary": "39. 6 倍市盈率让小米摆脱了硬件公司的“帽子”,硬件公司代表苹果当时市盈率也才 16.1 倍...."
        }
      }
    ]
  }
}

目录:elasticsearch6.2.4 教程索引目录

评论
条评论