elasticsearch 的mapping

例子一:
订单号 如:ATTS000928732 类型不分词。 index: not_analyzed
订单号是全部数据 如: 63745345637 这样的分词是可以的。

PUT /Order_v5{  "settings": {     //设置10个分片,理解为类似数据库中的表分区中一个个分区的概念,不知道是否妥当     "number_of_shards": 10  },   "mappings": {    "trades": {      "_id": {        "path": "id"      },      "properties": {        "id": {         "type": "integer",        //id:自增数字        //要求:查询         "store" : true        },        "name": {        //名称:佳洁士,强生婴儿沐浴露,100w Led节能灯,户外多功能折叠椅等            //要求:抓住关键字,如:佳洁士+牙膏 or 牙刷;<span></span> 强生+沐浴露; led+节能+100W; 户外+折叠椅等        //结论: 如果分词,就意味着产品品牌名词可能被拆分,如 "佳洁士", 如果不分词就意味着对用户输入要求匹配度高。先默认分词,试试看看。         "type": "string"        },        "brand": { //品牌: PG,P&G,宝洁集团,宝洁股份,联想集团,联想电脑等           "type": "string"        },        "orderNo": { //订单号 :如ATTS000928732          "type": "string",          "index":  "not_analyzed"        },        "description": {            //描述: 2015款玫瑰香型强生婴儿沐浴露,550ml,包邮            //搜索: 要求高亮所以设置store:true. 关键词权重:沐浴露 -> {强生+沐浴露 or 玫瑰花 + 沐浴露 or 550ml + 沐浴露 or 沐浴露 + 包邮-> {2015年 + 玫瑰香...}}            //设置:必须分词,而且要控制好              "type": "string", <span></span>                             "sort": true},        "date": {          "type": "date"        },        "city": {          "type": "string"        },        "qty": { <span></span>              // index无效            "type": "float"        },        "price": {              //价格: float index无效             "type": "float"        }      }    }  }}

[b]例子二[/b]
定义mapping
在添加索引的mapping时就可以这样定义分词器
{
"page":{
"properties":{
"title":{
"type":"string",
"indexAnalyzer":"ik",
"searchAnalyzer":"ik"
},
"content":{
"type":"string",
"indexAnalyzer":"ik",
"searchAnalyzer":"ik"
}
}
}
}
indexAnalyzer为索引时使用的分词器,searchAnalyzer为搜索时使用的分词器。

java mapping代码如下:

XContentBuilder content = XContentFactory.jsonBuilder().startObject()
.startObject("page")
.startObject("properties")
.startObject("title")
.field("type", "string")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.endObject()
.startObject("code")
.field("type", "string")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.endObject()
.endObject()
.endObject()
.endObject()

测试分词可用调用下面api,注意indexname为索引名,随便指定一个索引就行了
http://localhost:9200/indexname/_analyze?analyzer=ik&text=测试elasticsearch分词器

[b]elasticsearch中的mapping映射配置与查询典型案例[/b]

elasticsearch中的mapping映射配置示例
比如要搭建个中文新闻信息的搜索引擎,新闻有"标题"、"内容"、"作者"、"类型"、"发布时间"这五个字段;
我们要提供"标题和内容的检索"、"排序"、"高亮"、"统计"、"过滤"等一些基本功能。
ES提供了smartcn的中文分词插件,测试的话建议使用IK分词插件。
内容中properties对应mapping里的内容,里面5个字段。
type指出字段类型、内容、标题字段要进行分词和高亮因此要设置分词器和开启term_vector。
{
"news": {
"properties": {
"content": {#内容
"type": "string", #字段类型
"store": "no", #是否存储
"term_vector": "with_positions_offsets",#开启向量,用于高亮
"index_analyzer": "ik",#索引时分词器
"search_analyzer": "ik"#搜索时分词器
},
"title": {
"type": "string",
"store": "no",
"term_vector": "with_positions_offsets",
"index_analyzer": "ik",
"search_analyzer": "ik",
"boost": 5
},
"author": {
"type": "string",
"index": "not_analyzed"#该字段不分词
},
"publish_date": {
"type": "date",
"format": "yyyy/MM/dd",
"index": "not_analyzed"#该字段不分词
},
"category": {
"type": "string",
"index": "not_analyzed"#该字段不分词
}
}
}
}

查询示例:内容包括几个部分:

分页:from/size、字段:fields、排序sort、查询:query、过滤:filter、高亮:highlight、统计:facet
{
"from": 0,
"size": 10,
"fields": [
"title",
"content",
"publish_date",
"category",
"author"
],
"sort": [
{
"publish_date": {
"order": "asc"
}
},
"_score"
],
"query": {
"bool": {
"should": [
{
"term": {
"title": "中国"
}
},
{
"term": {
"content": "中国"
}
}
]
}
},
"filter": {
"range": {
"publish_date": {
"from": "2010/07/01",
"to": "2010/07/21",
"include_lower": true,
"include_upper": false
}
}
},
"highlight": {
"pre_tags": [
"<tag1>",
"<tag2>"
],
"post_tags": [
"</tag1>",
"</tag2>"
],
"fields": {
"title": {},
"content": {}
}
},
"facets": {
"cate": {
"terms": {
"field": "category"
}
}
}
}
结果包含需要的几个部分。
值得注意的是,facet的统计是命中的结果进行统计,filter是对结果进行过滤,filter不会影响facet,如果要统计filter掉的的就要使用filter facet。

elasticsearch 的mapping定义相关推荐

  1. ElasticSearch映射Mapping

    1.1 什么是映射 (1) 映射(mapping): 定义index的元数据, 指定要索引并存储的文档的字段类型. 也就是说映射决定了Elasticsearch在建立倒排索引.进行检索时对文档采取的相 ...

  2. Elasticsearch之Mapping设置详解

    Elasticsearch之Mapping详解 什么是Mapping? 字段的数据类型 Dynamic Mapping ES类型自动识别机制 更新mapping 定义Mapping 1.控制字段是否被 ...

  3. Elasticsearch之Mapping Meta-Fields

    Meta-Fields 每个文档都有与之关联的元字段,例如_index._type和 _id 元字段. 创建映射类型时,可以自定义其中一些元字段的行为. Identity meta-fields(文档 ...

  4. Elasticsearch之Mapping

    Mapping 类似数据库中的表机构定义,主要作用如下: - 定义Index下的字段名(FieldName) - 定义字段的类型,比如数值型.字符串型.布尔型等 - 定义倒排索引相关的配置,比如是否索 ...

  5. Elasticsearch之mapping映射入门

    10.1. 什么是mapping映射 概念:自动或手动为index中的_doc建立的一种数据结构和相关配置,简称为mapping映射. 插入几条数据,让es自动为我们建立一个索引 PUT /websi ...

  6. Elasticsearch 6 Mapping设置

    Mapping 类似于数据库中的表结构定义,主要作用如下: 定义Index下字段名(Field Name) 定义字段的类型,比如数值型,字符串型.布尔型等 定义倒排索引的相关配置,比如是否索引.记录p ...

  7. Elasticsearch的mapping到底是个什么玩意?

    编程界的小学生 一.举例 1.数据准备 2.搜索 3.分析 二.Mapping 1.是什么 2.如何查看 3.创建mapping 3.1.语法 3.2.Demo 3.3.analyzer字段释义 3. ...

  8. Elasticsearch的mapping映射

    前言 参考的es的文档 当前版本7.15 Mapping | Elasticsearch Guide [7.15] | Elastic 可能刚接触es的小白和我一样(我也是小白),映射是个啥玩意,如果 ...

  9. ElasticSearch概述和定义

    ElasticSearch 全文检索- ElasticSearch概述 ElasticSearch 产生背景 (1)海量数据组合条件查询 (2)毫秒级或者秒级返回数据 这两个很简单,不多说. Elas ...

最新文章

  1. 卷积神经网络(cnn)的体系结构
  2. ACDream - Dynamic Inversions II
  3. origin master 出现The authenticity of host 'github.com ' can't be established
  4. 优缺点 快速扫描 硬盘监测_机械硬盘坏道如何检测与修复?看完这篇你就知道了...
  5. Spark机器学习(12):神经网络算法
  6. 走近CTPN:1. 解读README
  7. Java程序员进阶书籍 ,看这11本书就够了
  8. 微信公众平台开发之微信红包的实现
  9. Error500错误的解决方法(俩种解决方法)
  10. kali渗透之取得DC-9的root权限
  11. Lineage Logistics完成对 UTI Forwarding的收购
  12. 如何正确的使用 Service?
  13. mysql 主主1032_mysql 主从复制 1032
  14. BUUCTF [NCTF2019]childRSA(费马小定理)
  15. EOS智能合约开发系列(八): 账户和权限
  16. K8S:Volume
  17. 2022工作中遇到的问题二
  18. overlay文件系统解析
  19. Fighting!Hack for wuhan 黑客马拉松等你来战
  20. 技术选型实战|BFE vs Nginx

热门文章

  1. 在华为OD的程序员经验分享
  2. error pulling image configuration: download failed after attempts=6: dialing production.cloudflare.d
  3. C语言程序分析之长方形的体积(函数做法)
  4. 不是学生会主席也会用到的python知识~用python读取学生成绩
  5. mcs51C语言指令系统,MCS-51单片机指令系统和汇编语言程序实例
  6. 【程序员创业】商业计划书怎么写才能与众不同?
  7. 网络文学”到底”在哪里?
  8. mysql下载64位免安装_windows 安装MySQL 5.7.19【免安装版】
  9. 怎么把caj完整转换成Word文档?
  10. python实现毕达哥拉斯模糊零和博弈