elasticsearch mapping之fields
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
字段就有两个属性了分别是text
和keyword
,city
字段可以用作全文检索,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 analyzer
和english analyzer
解析,词根接受包含foxes
和fox
的文档,因此可以匹配更多的文档。通过查询词根可以提高文档的相关性。
elasticsearch mapping之fields相关推荐
- Elasticsearch:Runtime fields 及其应用(一)
在之前的很多文章中,我详述了如何使用 runtime fields.在今天的文章中,我想更多地介绍 runtime fields 及其一些用例. 我们知道, 从历史上看,Elasticsearch 依 ...
- Elasticsearch:Runtime fields 及其应用(二)
这是继上一篇文章 "Elasticsearch:Runtime fields 及其应用(一)" 的续篇. 索引运行时字段 运行时字段由它们运行的上下文定义. 例如,你可以在搜索查询 ...
- 如何设计一个高性能Elasticsearch mapping
如何设计一个高性能Elasticsearch mapping 前言 mapping mapping 能做什么 Dynamic mapping dynamic=true dynamic=runtime ...
- Elasticsearch教程 elasticsearch Mapping的创建
一.Mapping介绍 在 Elasticsearch 中, Mapping 是什么? mapping 在 Elasticsearch 中的作用就是约束. 1.数据类型声明 它类似于静态语言中 ...
- 【Elasticsearch】Elasticsearch:Runtime fields 入门, Elastic 的 schema on read 实现 - 7.11 发布
1.概述 转载:Elasticsearch:Runtime fields 入门, Elastic 的 schema on read 实现 - 7.11 发布
- elasticsearch中best fields策略dis_max和tie_breaker详解
参考:elasticsearch中best fields策略dis_max和tie_breaker详解 概念 常规multi-field搜索结果分析 dis_max参数设置 一.为帖子数据增加cont ...
- Elasticsearch Mapping 详解
1. Mapping(映射) Mapping 是定义文档及其包含的字段是如何存储和索引的过程 例如,我们用映射来定义: 哪些字符串字段应该被当做全文字段 哪些字段包含数字.日期或地理位置 是否应该将 ...
- Elasticsearch mapping与analysis
映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等).分析(analysis)机制用于进行全文文本(Fu ...
- ElasticSearch - Mapping 配置字段属性:对 long 类型字段聚合需要开启 doc_values:true
概述 当遇到,类似如下报错: Can't load fielddata on [product_id] because fielddata is unsupported on fields of ty ...
最新文章
- linux程序计数器,如何在C中打印程序计数器的确切值
- 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别
- Python GUI漫谈
- 光流 | 基于LK(Lucas-Kanade)光流算法的运动目标检测
- C++的优秀特性2:inline 函数
- python import 路径_python import 上级目录的导入
- oracle tb级别数据量,备份TB级别Oracle数据库的一些技巧
- aba问题mysql_面试题总结:可能是全网最好的MySQL重要知识点
- POJ1958 Strange Towers of Hanoi [递推]
- C语言小知识---printf()函数
- C# 抗变与协变的理解
- 链接报错:ld: 1 duplicate symbol for architecture x86_64
- Foobar2000目前最强解码方案
- 最小二乘法的应用(2015A题A题太阳影子定位)
- boost升压电路原理
- tensorflow或运算 tf.logical_or tf.math.logical_or
- Spring Aop 报错 ...but was actually of type 'com.sun.proxy.$Proxy**'的解决方案
- 虚幻4皮肤材质_虚幻引擎4.5版本预览说明
- 一个性能优化实操案例
- [JZOJ6355] 【NOIP2019模拟】普
热门文章
- 轻松简单地开发Web Services 2
- python语言中with as的用法使用详解
- PHP的自动加载__autoload spl_autoload_register
- java输入hello_详解JAVA输出Hello World
- 提高显微镜分辨率方法_Nat Protoc | 利用激光干涉获得超高分辨率显微镜
- 微信小程序页面跳转后清除定时器
- 微信小程序长按图片,实现保存、转发、识别图中二维码
- CRMEB小程序安装说明
- 千万千万不要运行的 Linux 命令
- sql服务找不到服务器,我找不到SQL服务管理器