elasticsearch 一些小技巧
创建索引并设置字段的mapping
请求地址
PUT请求 http://ip:9200/索引名称/
{
"settings": {"number_of_shards": 3,"number_of_replicas": 1},
"mappings": {
"properties": {
"video_like": {"type": "long"},
"video_date": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},
"video_title": {"analyzer" : "ik_smart","type": "text"},
"video_comment": {"type": "long"},
"share_conut": {"type": "long"},
"video_img_url": {"type": "text"},
"video_url": {"type": "text"},
"type_id": {"type": "long"},
"updata_time": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},
"user_id":{"type":"long"}
}
}
}
对已存在的索引增加mapping字段
请求url地址如下:
PUT请求 http://ip:9200/index/_mapping
index为你索引库的名称。
body里写要新增的字段名称和字段类型,下面的例子是新增 name 字段,类型为 text 。
{
"properties":{
"name":{
"type":"text"
}
}
}
判断某个字段是否为空
http://ip:9200/index/_search
向es插入数据时,如果某个字段为空,我就没有对该字段写入值,所以判断某个字段是否为空值,直接判断这个字段是否存在即可。用 exists 判断某个字段是否存在,这个例子是判断 label 的值是否为空
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "label"
}
}
}
}
}
must 多个条件
http://ip:9200/index/_search
must 多个条件时对应的类型应该时列表。下面的例子: 查找必须是video_date 在某个时间范围,并且 label 字段存在的结果。
{
"query": {
"bool": {
"must": [
{
"range": {
"video_date": {
"gte": "now-24h+8h",
"lte": "now+8h"
}
}
},
{
"exists": {
"field": "label"
}
}
]
}
}
}