Elasticsearch-数组和多字段
ES-数组和多字段
当需要在同一个字段中需要拥有多个值时,就会用到数组。
数组
如果要索引拥有多个值的字段,将这些值放入方括号中即可。
在music索引下的album类型中,添加songs字段,存储专辑下的歌曲列表
FengZhendeMacBook-Pro:bin FengZhen$ curl -XPUT 'localhost:9200/music/album/1?pretty' -d '{
> "name":"八度空间",
> "date":"2002-07-18",
> "songs":["半兽人","回到过去","米兰的小铁匠","最后的战役"]
> }'
{
"_index" : "music",
"_type" : "album",
"_id" : "1",
"_version" : 2,
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : false
}
映射将songs字段定义为字符串性,和单个值同样处理
FengZhendeMacBook-Pro:bin FengZhen$ curl 'localhost:9200/music/_mapping/album?pretty'
{
"music" : {
"mappings" : {
"album" : {
"properties" : {
"date" : {
"type" : "date",
"format" : "strict_date_optional_time||epoch_millis"
},
"downloadable" : {
"type" : "boolean"
},
"format_date" : {
"type" : "date",
"format" : "MMM DD YYYY"
},
"name" : {
"type" : "string"
},
"singer" : {
"type" : "string"
},
"songs" : {
"type" : "string"
}
}
}
}
}
}
所有核心类型都支持数组,无需修改映射,既可以使用单一值,也可以使用数组。对于Lucene内部处理而言,这两者基本是一致的,在同一个字段中索引或多或少的词条,完全取决于提供了多少值。
多字段
多字段允许使用不同的设置,对同一项数据索引多次。如:上述例子中在专辑类型album中使用两种不同的选项来配置songs字段:analyzed、针对每个单词进行匹配,以及not_analyzed、针对完整歌曲名称的精确匹配。
无需重新索引数据,就能将单字段升级到多字段。一旦子字段已经存在,就不能将其抹去。
设置字符串类型的多字段:一次是analyzed,一次是not_analyzed
curl -XPUT 'localhost:9200/music/_mapping/album?pretty' -d '{
"album":{
"properties":{
"songs":{
"type":"string",
"index":"analyzed",
"fields":{
"verbatim":{
"type":"string",
"index":"not_analyzed"
}
}
}
}
}
}'
默认的歌曲列表字段是analyzed,将提供的文本转化为小写,并切分为单词。
第二个字段songs.verbatim是not_analyzed,将原有的标签当做单一的词条处理
要搜索analyzed版本的歌曲字段,就像搜索其它字符串一样。如果要搜索not_analyzed版本的字段(仅仅精确匹配原有的歌曲),就要指定完整的路径songs.verbatim.
多字段和数组字段都允许在单一字段中拥有多个核心类型的值。
Elasticsearch-数组和多字段的更多相关文章
- PHP 二维数组根据某个字段排序
二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort 对数组的值按 ...
- PHP二位数组按照数组的某个字段值排序
不多废话 直接代码 /** * @name 排序 按照数组的某个字段值排序 * @param $array 排序数组 $field 排序字段 $direction 排序顺序 * @author wan ...
- php二维数组根据某个字段去重
php的二维数组根据某个字段去重,在这默认为二维数组的结构是一样的,现在根据二维数组里的id字段去重,把id相同的重复的元素去掉 /** * 二维数组根据某个字段去重 * @param array $ ...
- PHP二维数组按某个字段排序
//准备 二维数组 //按一个字段排序 foreach($rank as $key=>$val){ $dos[$key] = $val['timelength']; } array_multis ...
- PHP 二维数组根据某个字段按指定排序方式排序
/** * 二维数组根据某个字段按指定排序方式排序 * @param $arr array 二维数组 * @param $field string 指定字段 * @param int $sort_or ...
- extract_by_one 根据二维数组中某字段来提取数组信息,查看有无重复信息
public function tt(){ $param = array( array ( 'hykno' => '2222222-CB', 'tcdk_fid' => '458B6D70 ...
- ElasticSearch Mapping中的字段类型
1)string: 默认会被分词 2)数字类型主要如下几种: long:64位存储 integer:32位存储 short:16位存储 byte:8位存储 double:64位双精度存储 f ...
- php 二维数组按某字段排序
思路很重要,最好的方法是查询时按这个字段给你排好,把问题丢给数据库,比如 order by age ,如果遇到中文时需要这样写(mysql) 如:select * from category ord ...
- 关于php利用数组中某个字段进行排序
工作中用到了一个相关的问题,搜索了百度有好多种方法,但是不同方法对应的函数不同,试了几个发现还是下面这个比较好用: array_multisort($sortarray,SortRank,$sortl ...
- PHP 二维数组根据某个字段排序 复制代码 array_multisort
//二维数组,按照里面的age从大到小降序,代码如下 <?php header('Content-Type:text/html;Charset=utf-8'); $arrUsers = arra ...
随机推荐
- sqlserver 查询 字段
SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='MenuInfo' select * from sysobjects where ...
- pandas优化
目录 前言 使用Datetime数据节省时间 pandas数据的循环操作 使用itertuples() 和iterrows() 循环 Pandas的 .apply()方法 矢量化操作:使用.isin( ...
- canvas小实验
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jQuery的replaceWith()函数用法详解
replaceWith,替换元素 replaceWith() 方法将选择的元素的内容替换为其他内容. 我们先在先看一个实例 <!DOCTYPE html> <html> < ...
- Python基础之Python介绍
Python的创始人为吉多·范罗苏姆(Guido Van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新 ...
- JVM之Java类加载机制
什么是类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这既是虚拟机的类加载机制 类的生命周期 生命周期简述 ...
- linux线程池thrmgr源码解析
linux线程池thrmgr源码解析 1 thrmgr线程池的作用 thrmgr线程池的作用是提高程序的并发处理能力,在多CPU的服务器上运行程序,可以并发执行多个任务. 2 ...
- Java官方操纵byte数组的方式
java官方提供了一种操作字节数组的方法——内存流(字节数组流)ByteArrayInputStream.ByteArrayOutputStream ByteArrayOutputStream——by ...
- laravel中跟据某个特定顺序去排序查出来的数据:FIND_IN_SET
//返回有顺序的客户id $customer_ids = $customer->bespeakTime($uid); $res = Customer::with('customer_indust ...
- Button.OnClientClick
Button.OnClientClick Gets or sets the client-side script that executes when a Button control's Click ...