首页 > 其他分享 >ElasticSearch之-映射管理

ElasticSearch之-映射管理

时间:2024-01-19 20:33:24浏览次数:22  
标签:映射 管理 text company 索引 ElasticSearch 类型 type

es中的类型---->对应mysql中的表,也叫映射管理

在Elasticsearch 6.0.0或更高版本中创建的索引只包含一个mapping type。 在5.x中使用multiple mapping types创建的索引将继续像以前一样在Elasticsearch 6.x中运行(只能读,不能存)。 Mapping types将在Elasticsearch 7.0.0中完全删除(读都不能读了,从旧版导入都不行了)


 

1 映射介绍

在创建索引的时候,可以预先定义字段的类型及相关属性

Es会根据Json数据源的基础类型,猜测你想要映射的字段,将输入的数据转变成可以搜索的索引项。

Mapping是我们自己定义的字段数据类型,同时告诉es如何索引数据及是否可以被搜索。

作用:会让索引建立的更加细致和完善

1.1 字段数据类型

string类型:text,keyword

数字类型:long(int64),integer(int32),short(int16),byte(int8),double,float    这些都是java的基础数据类型

日期类型:data

布尔类型:boolean

binary类型:binary 二进制类型,可以直接把文件以二进制的格式放进去,mysql也有二进制类型,一般不用

复杂类型:object(实体,对象,可以是字典也可以是列表),nested(列表)

geo类型:geo-point,geo-shape(地理位置)

专业类型:ip,competion(搜索建议)


1.2 映射参数

属性描述适合类型
store 值为yes表示存储,no表示不存储,默认为no all
index yes表示分析(分词),no表示不分析,默认为true text
null_value 如果字段为空,可以设置一个默认值,比如"NA"(传过来为空,不能搜索,na可以搜索) all
analyzer 可以设置索引和搜索时用的分析器,默认使用的是standard分析器,还可以使用whitespace,simple。都是英文分析器 all
include_in_all 默认es为每个文档定义一个特殊域_all,它的作用是让每个字段都被搜索到,如果想让某个字段不被搜索到,可以设置为false all
format 时间格式字符串模式 date

 

2 创建索引

text类型会取出词做倒排索引, keyword不会被分词,原样存储,原样匹配

mapping类型一旦确定,以后就不能修改了

es 6.x版本及以前版本

PUT books
{
  "mappings": {
    "book":{  #表示类型(表名),6.x以前可以建多个表
      "properties":{
        "title":{
          "type":"text",
         	"analyzer": "ik_max_word"
        },
        "price":{
          "type":"integer"
        },
        "addr":{
          "type":"keyword"
        },
        "company":{
          "properties":{
            "name":{"type":"text"},
            "company_addr":{"type":"text"},
            "employee_count":{"type":"integer"}
          }
        },
        "publish_date":{"type":"date","format":"yyy-MM-dd"}      
      }
    }
  }
}

es 7.x版本以后

PUT books  #创建索引和映射,创建后不会看到表的结构,新增文档后才能看到
{
  "mappings": { #创建映射(创建表) 是一个复杂类型,字典/字典中再嵌套字典
    "properties":{ #包在properties字典中
      "title":{    #字段名
        "type":"text",  #字段属性,text类型
        "analyzer": "ik_max_word"  #字段属性,用ik_max_word做分词
      },
      "price":{  #字段名
        "type":"integer"
      },
      "addr":{  #字段名
        "type":"keyword"  #keyword类型不做分词,直接建索引
      },
      "company":{ #字段名
        "properties":{  #包在properties字典中
          "name":{"type":"text"},
          "company_addr":{"type":"text"},
          "employee_count":{"type":"integer"}
        }
      },
      "publish_date":{"type":"date","format":"yyy-MM-dd"} #日期类型有format属性,表示日期格式
      
    }  
  }
}

插入数据测试:属于文档操作

# 朝books索引中的表插入数据,由于没有写映射名(表名),默认就是_doc, 1表示这条数据的id号
PUT books/_doc/1 
{
  "title":"大头儿子小偷爸爸",
  "price":100,  
  "addr":"北京天安门",
  "company":{
    "name":"我爱北京天安门",
    "company_addr":"我的家在东北松花江傻姑娘",
    "employee_count":10
  },
  "publish_date":"2019-08-19"
}
#测试数据2
PUT books/_doc/2
{
  "title":"白雪公主和十个小矮人",
  "price":"99", #写字符串会自动转换成int类型
  "addr":"黑暗森里",
  "company":{
    "name":"我的家乡在上海",
    "company_addr":"朋友一生一起走",
    "employee_count":10
  },
  "publish_date":"2018-05-19"
}

#测试数据3  因为是非关系型数据库,可以不考虑字段,测试数据3没有company字段,并且新增了name字段,也能插入进去
PUT books/_doc/3
{
  "title":"白雪公主和十个小矮人",
  "price":"99", #写字符串会自动转换
  "addr":"黑暗森里",
  "publish_date":"2018-05-19"
  |"name":"lqz"   # 注意: 新增的字段有缩进,不然报错
}

 

3 查看映射

#查看books索引的mapping
# 1、创建索引时,如果没有创建映射(创建表)只要插入文档,会自动创建出字段。
# 2、甚至不用创建索引,只要插入文档,会自动创建索引、映射、字段,自动创建索引和映射后不能删除。
GET books/_mapping
#获取所有的mapping
GET _all/_mapping

 

标签:映射,管理,text,company,索引,ElasticSearch,类型,type
From: https://www.cnblogs.com/-hz01/p/17975535

相关文章

  • 使用pnpm来管理vue项目的node_modules
    要使用pnpm,先确保nodejs版本在16以上(目前用的18.16.1)(确保本地已经全局安装了pnpm如果没有安装就使用npmi-gpnpm来全局安装)一.老项目从npm迁移到pnpm  先删掉项目中的node_modules文件夹和package-lock.json文件   在终端运行pnpmi 安装成功后根目录下会多一......
  • 安全基础-用户和组管理
    1用户管理1.1用户概述每一个用户登录系统后,拥有不同的操作权限每个账户有自己唯一的SID(安全标识符)用户SID:S-1-5-21-426206823-2579496042-14852678-500系统SID:S-1-5-21-426206823-2579496042-14852678用户UID:500WIndows系统管理员Administrator的UID是500普通用户的......
  • 新能源汽车智慧充电桩方案:智能高效的充电桩管理模式及应用场景
    一、行业背景随着全球对环境保护的日益重视,新能源汽车成为了未来的发展趋势。而充电桩作为新能源汽车的核心基础设施,其智慧化的解决方案对于推动新能源汽车的普及和发展至关重要。通过智能化、高效化的充电服务,提高用户体验,满足快速增长的电动汽车充电需求已经成为当前行业发......
  • elasticsearch学习笔记2 - logstash jdbc 同步MYSQL到ES
    logstash是一个管道工具input输入output输出filter过滤条件咋们初级先了解到这些再说比较优秀的教程文档作为基础知识需要了解:https://blog.csdn.net/qq_19283249/article/details/130839158?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170564710516800215......
  • 使用 Docker 安装 Elasticsearch (本地环境 M1 Mac)
    Elasticsearch+kibana下载安装dockerpullelasticsearch:7.16.2dockerrun--namees-d-eES_JAVA_OPTS=“-Xms512m-Xmx512m”-e“discovery.type=single-node”-p9200:9200-p9300:9300elasticsearch:7.16.2dockerpullkibana:7.16.2dockerrun--namekibana-eELAST......
  • 《PMBOK指南第六版》第4章 项目整合管理 -> 指导与管理项目工作:输出 - 工作绩效数据
    指导与管理项目工作:输出- 工作绩效数据工作绩效数据 是在执行项目工作的过程中,从每个正在执行的活动中收集到的原始观察结果和测量值。数据通常是在最低层次的细节,将交由其他过程从中提炼出信息。在工作执行过程中收集数据,再交由控制过程做进一步分析。例如,工......
  • 《PMBOK指南第六版》第4章 项目整合管理 -> 指导与管理项目工作:输出 - 可交付成果
    指导与管理项目工作:输出- 可交付成果可交付成果可交付成果是在某一过程、阶段或项目完成时,必须产出任何独特并可核实的产品、成果或服务能力。他通常是项目结果,并可包括项目管理计划的组成部分。一旦完成了可交付成果的第一个版本,就应......
  • 快速评估您的IT事件管理实践
    您在寻找提高事件响应效率和有效性的方法吗?为什么需要评估IT事件管理?尽管改进组织的事件管理实践不会一蹴而就,但我们还是要从制定明确的事件响应计划开始。使用ServiceDeskPlus,快速检查您的事件管理实践是否符合行业标准,并进一步优化您的响应能力。当涉及到IT事件时,即使是最......
  • 制造业适用的各种管理系统介绍及集成
    管理系统如何帮助工厂的简要介绍:ERP系统:它可以管理公司的财务、供应链、人力资源等方面,可以为制造业提供有力的管理和监督支持,帮助工厂控制成本、提高效率。MES系统:它能够实时监控和控制制造过程中的各个环节,包括生产计划、生产进度、物料管理、质量控制、设备维护等。通过MES系统,......
  • CRM系统实施有效客户管理,需要做到这五点
    随着企业市场竞争的加剧,企业如何更好地管理客户已成为企业发展的重要问题。而CRM(客户关系管理)系统则成为了企业管理客户的重要工具之一。那么,如何才能做好CRM客户管理呢?CRM客户管理怎么做一、明确客户需求CRM系统的目的是为了更好地服务客户,因此在使用CRM系统之前,企......