ES允许同一个字段有两个不同的类型,例如一个字段可以拥有keyword类型来进行聚合与排序,也可以拥有text来做全文检索。
举例如下:

PUT my_index
{"mappings": {"type": {"properties": {"city": {"type": "text","fields": {"raw": {"type": "keyword"}}}}}}
}PUT my_index/type/1
{"city": "New York"
}PUT my_index/_doc/2
{"city": "York"
}GET my_index/_search
{"query": {"match": {"city": "york" }},"sort": {"city.raw": "asc" },"aggs": {"Cities": {"terms": {"field": "city.raw" }}}
}

这样city字段就有两个属性了分别是textkeywordcity字段可以用作全文检索,city.raw可以用作排序和聚合。
此外还可以使用不同的analyzer,例如我们可以使用standard analyzer来进行分词,同时使用english analyzer来将单词转为词根。例如:

PUT my_index
{"mappings": {"properties": {"text": { "type": "text", //text 这个使用`standard` analyzer"fields": {"english": { "type":     "text","analyzer": "english" // text.english使用`english ` analyzer}}}}}
}PUT my_index/_doc/1
{ "text": "quick brown fox" } PUT my_index/_doc/2
{ "text": "quick brown foxes" } GET my_index/_search
{"query": {"multi_match": {"query": "quick brown foxes","fields": [ "text","text.english"  ],  // text and text.english fields and combine the scores"type": "most_fields" }}
}

text字段包含第一条数据中的fox和第二条数据中的foxes,而text.english字段包含两条数据中的fox,因为第二条数据的foxes的词根是fox
此外查询语句同样被standard analyzerenglish analyzer解析,词根接受包含foxesfox的文档,因此可以匹配更多的文档。通过查询词根可以提高文档的相关性。

elasticsearch mapping之fields相关推荐

  1. Elasticsearch:Runtime fields 及其应用(一)

    在之前的很多文章中,我详述了如何使用 runtime fields.在今天的文章中,我想更多地介绍 runtime fields 及其一些用例. 我们知道, 从历史上看,Elasticsearch 依 ...

  2. Elasticsearch:Runtime fields 及其应用(二)

    这是继上一篇文章 "Elasticsearch:Runtime fields 及其应用(一)" 的续篇. 索引运行时字段 运行时字段由它们运行的上下文定义. 例如,你可以在搜索查询 ...

  3. 如何设计一个高性能Elasticsearch mapping

    如何设计一个高性能Elasticsearch mapping 前言 mapping mapping 能做什么 Dynamic mapping dynamic=true dynamic=runtime ...

  4. Elasticsearch教程 elasticsearch Mapping的创建

    一.Mapping介绍 在 Elasticsearch  中, Mapping  是什么? mapping  在 Elasticsearch  中的作用就是约束. 1.数据类型声明 它类似于静态语言中 ...

  5. 【Elasticsearch】Elasticsearch:Runtime fields 入门, Elastic 的 schema on read 实现 - 7.11 发布

    1.概述 转载:Elasticsearch:Runtime fields 入门, Elastic 的 schema on read 实现 - 7.11 发布

  6. elasticsearch中best fields策略dis_max和tie_breaker详解

    参考:elasticsearch中best fields策略dis_max和tie_breaker详解 概念 常规multi-field搜索结果分析 dis_max参数设置 一.为帖子数据增加cont ...

  7. Elasticsearch Mapping 详解

    1.  Mapping(映射) Mapping 是定义文档及其包含的字段是如何存储和索引的过程 例如,我们用映射来定义: 哪些字符串字段应该被当做全文字段 哪些字段包含数字.日期或地理位置 是否应该将 ...

  8. Elasticsearch mapping与analysis

    映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等).分析(analysis)机制用于进行全文文本(Fu ...

  9. ElasticSearch - Mapping 配置字段属性:对 long 类型字段聚合需要开启 doc_values:true

    概述 当遇到,类似如下报错: Can't load fielddata on [product_id] because fielddata is unsupported on fields of ty ...

最新文章

  1. linux程序计数器,如何在C中打印程序计数器的确切值
  2. 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别
  3. Python GUI漫谈
  4. 光流 | 基于LK(Lucas-Kanade)光流算法的运动目标检测
  5. C++的优秀特性2:inline 函数
  6. python import 路径_python import 上级目录的导入
  7. oracle tb级别数据量,备份TB级别Oracle数据库的一些技巧
  8. aba问题mysql_面试题总结:可能是全网最好的MySQL重要知识点
  9. POJ1958 Strange Towers of Hanoi [递推]
  10. C语言小知识---printf()函数
  11. C# 抗变与协变的理解
  12. 链接报错:ld: 1 duplicate symbol for architecture x86_64
  13. Foobar2000目前最强解码方案
  14. 最小二乘法的应用(2015A题A题太阳影子定位)
  15. boost升压电路原理
  16. tensorflow或运算 tf.logical_or tf.math.logical_or
  17. Spring Aop 报错 ...but was actually of type 'com.sun.proxy.$Proxy**'的解决方案
  18. 虚幻4皮肤材质_虚幻引擎4.5版本预览说明
  19. 一个性能优化实操案例
  20. [JZOJ6355] 【NOIP2019模拟】普

热门文章

  1. 轻松简单地开发Web Services 2
  2. python语言中with as的用法使用详解
  3. PHP的自动加载__autoload spl_autoload_register
  4. java输入hello_详解JAVA输出Hello World
  5. 提高显微镜分辨率方法_Nat Protoc | 利用激光干涉获得超高分辨率显微镜
  6. 微信小程序页面跳转后清除定时器
  7. 微信小程序长按图片,实现保存、转发、识别图中二维码
  8. CRMEB小程序安装说明
  9. 千万千万不要运行的 Linux 命令
  10. sql服务找不到服务器,我找不到SQL服务管理器