text:
按规则分词,至少分词1个词,做全文检索(不要存放空值,会导致性能浪费)
默认分词器standard
应用场景:用于分词检索场景
keyword:
不分词,仅仅一个词,查询效率高,早期没有这个类型,用String代替,通过属性设置
应用场景:固定文本,无需全文检索,如姓名,省,商品类目
整数:Long(64bit)、Integer(32bit、21亿)、short(16bit)、Byte(8bit)
浮点:Double 、Float 、Half Float 、Scaled float(缩放浮点类型,解决浮点类型计算精度的错误问题)
Scaled float,原理基于long去实现的,需要指定scaling_factor
POST alibaba-company-001/_doc/02
{
"mappings": {
"properties": {
"income": {
"type": "scaled_float",
"scaling_factor": 100
},
"outcome":{
"type": "scaled_float",
"scaling_factor": 100
}
}
}
}
日期类型 date
日期格式化 format,建议使用UTC时间格式,因为时区问题可能导致查询失败
PUT alibaba-company-001/_doc/02
{
"mappings": {
"properties": {
"createDate":{
"type": "date"
},
"regTime":{
"type": "date",
"format": "yy-MM-dd'T'HH:mm:ss.SSS"
}
}
}
}
字符类型算法原理:
Text、keyword 倒排索引
数值类型算法原理:
整型、浮点、日期类型
BKD树算法,底层存储压缩
复合字段类型
object:json对象形式,可嵌套多种子对象
Mapping映射(类似于关系型数据库中的schema,用来描述表的结构)
_source: enable:true false
dynamic : true false strict
range:(BKD树算法)
"gte"大于,"lte"小于,整型范围、浮点范围、日期范围、ip范围
field_detect:字段类型自动检测,默认开启
字段数量限制:1000个
对象字段深度限制:20,建议最多3存
特殊类型
关联字段类型:join父子类型
定义:数据存在父子关系,一条数据可以有多条子数据,一条子数据仅有一条父数据
DELETE alibaba-company-001
PUT alibaba-company-001
{
"settings": {
"number_of_replicas": 1,
"number_of_shards": 3
},
"mappings": {
"properties": {
"companyID":{
"type": "integer"
},
"companyName":{
"type": "keyword"
},
"join_father_child":{
"type": "join",
"relations":{
"baba":"erzi"
}
}
}
}
}
#父子关系必须在同一个分片routing=2
PUT alibaba-company-001/_doc/1?routing=2
{
"companyID":6,
"companyName":"alibaba",
"join_father_child":{
"name":"baba"
}
}
PUT alibaba-company-001/_doc/2?routing=2
{
"companyID":8,
"companyName":"cainiao",
"join_father_child":{
"name":"erzi",
"parent":"1"
}
}
PUT alibaba-company-001/_doc/3?routing=2
{
"companyID":9,
"companyName":"tianmao",
"join_father_child":{
"name":"erzi",
"parent":"1"
}
}
#由父节点查子节点
GET alibaba-company-001/_search
{
"query": {
"parent_id":{
"type":"erzi",
"id":1
}
}
}
#由子节点查父节点
GET alibaba-company-001/_search
{
"query": {
"has_child":{
"type":"erzi",
"query": {
"match_all": {}
}
}
}
}
nested:嵌套
错误查询示例
DELETE alibaba-company-001
PUT alibaba-company-001
{
"mappings": {
"properties": {
"companyName":{
"type": "text"
},
"area":{
"properties": {
"province":{
"type":"keyword"
},
"city":{
"type":"keyword"
}
}
}
}
}
}
PUT alibaba-company-001/_doc/1
{
"companyName":"alibaba",
"area":[
{
"province":"zj",
"city":"hz"
},
{
"province":"sh",
"city":"pd"
}
]
}
GET alibaba-company-001/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"area.province": {
"value": "zj"
}
}
},
{
"term": {
"area.city": {
"value": "pd"
}
}
}
]
}
}
}
查询结果:查询浙江省下浦东的公司
{
"took" : 9,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.723315,
"hits" : [
{
"_index" : "alibaba-company-001",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.723315,
"_source" : {
"companyName" : "alibaba",
"area" : [
{
"province" : "zj",
"city" : "hz"
},
{
"province" : "sh",
"city" : "pd"
}
]
}
}
]
}
}
正确查询示例:
DELETE alibaba-company-001
PUT alibaba-company-001
{
"mappings": {
"properties": {
"companyName":{
"type": "text"
},
"area":{
"type": "nested",
"properties": {
"province":{
"type":"keyword"
},
"city":{
"type":"keyword"
}
}
}
}
}
}
PUT alibaba-company-001/_doc/1
{
"companyName":"alibaba",
"area":[
{
"province":"zj",
"city":"hz"
},
{
"province":"sh",
"city":"pd"
}
]
}
GET alibaba-company-001/_search
{
"query": {
"nested": {
"path": "area",
"query": {
"bool": {
"must": [
{
"term": {
"area.province": {
"value": "zj"
}
}
},
{
"term": {
"area.city": {
"value": "pd"
}
}
}
]
}
}
}
}
}
查询结果:
{
"took" : 49,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
}
alias:别名
flattened:平铺(对象object类型的一种改进,对象object类型可以动态扩展多个字段,fattend就当成一个字段,且保证原来的json格式),使用场景:日志领域
constant_keyword:固定值,不可以被修改,应用场景:数据的版本号等
Multi_fileds:多字段类型,可设计为多种类型,
高级数据字段类型:
geo_point:地理位置
geo_shape:地理图形(应用:在地图上画一个区域,在区域内进行检索)
shape:多边图形应用(2D平面类型检索,支持多边形)
特殊行业字段:网络地址,直方图类型,词项统计,自动完成类型
网友评论