elasticsearch 权威指南Mapping(映射)

什么是映射

文档字段个各个类型 默认是String

Mapping设置

ES支持的数据类型

ES5.*之前

ES5.*之后

数据类型 说明
字符串类型  string:分词 keyword:不分词
数值类型  long,integer,short byte(-127~128),double,float,half_float.scaled_float
boolean  值:false, "false", true, "true"
日期  json没有日期类型json通过指定符合格式的为date类型 "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"

范围类型  支持范围搜索 integer_range,float_range,long_range,double_range,date_range,ip_range(IPV4 或 IPV6 格式的字符串)
数组类型  array
二进制 binary
对象类型 object
嵌套类型 Nested  nested

地理位置数据类型(geo_point)

 geo_point

专用数据类型

 multi-fields

可参考:https://www.jianshu.com/p/e8a9feea683c

创建mapping

put:http://127.0.0.1:9200/db

{
    "mappings": {
        "product": {//type
            "properties": {
                "productName": {//字段
                    "type": "text"//数据类型 } } } } }

mapping参数

参数 说明
analyzer 分词器 默认:standard
boost 字段权重默认1 在通过_all字段查询 根据此字段来权重
dynamic 控制字段新增 true(默认 允许新增) false  strict 不能新增文档
index 控制字段是否索引(可搜索) true 是 false否

参考:https://www.jianshu.com/p/e8a9feea683c

查看当前索引的映射

http://127.0.0.1:9200/blogs2/product/_mapping

{
    "blogs2": {
        "mappings": {
            "product": {
                "properties": {
                    "price": { "type": "long" }, "productName": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "remark": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "tags": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } } } }

自定义映射

作用定义数据类型 比如数字映射成text 大于小于范围搜索就会无效 还有明确哪些fullText需要分词哪些不需要分词

确切值(Exact values)和全文本(FullText)

es支持很多种数据类型但是主要分为2大类
确切值就是能够确定的值 比如id 日期  通过=就能查询到我们想要的数据

而全文本是需要进行相似度匹配 返回最佳匹配

猜你喜欢

转载自www.cnblogs.com/LQBlog/p/10648496.html