ES 创建索引
PUT /xxxx_index
{
"settings": {
"number_of_shards": 1, // 是数据分片数,默认为5,具体根据自己实际情况设置。
"number_of_replicas": "0" // 是数据备份数,具体根据自己实际情况设置。
},
"mappings": {
"properties": {
"xxx": {
"type": "keyword"
},
"xxx": {
"type": "ip" // IP类型
},
"xxx": {
"properties": { // 对象类型
"xxx": {
"type": "keyword"
},
"xxx": {
"type": "integer"
}
}
},
"xxx": {
"type": "long" // long类型
},
"xxx": {
"type": "integer" // integer类型
},
"xxx": { // 对象名
"type": "nested", // 对象数组类型
"properties": {
"xxx": { // 属性1
"type": "keyword"
},
"xxx": { // 属性2
"type": "keyword"
}
}
},
"xxx": {
"type": "date", // 时间类型
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
}
定义查询体
let queryObj = {
"bool": {
"must": []
}
};
对象属性查询
let str_xxx = [];
let must_item = {
"terms": {
"xxx.a": str_xxx //键:值 对象名.属性名:字符串数组
}
}
queryObj.bool.must.push(must_item);
对象数组查询
let must_item = {
"nested": {
"path": "xxx", // xxx 对象名
"query": {
"term": {
"xxx.xxx": { // 对象名.属性名
"value": aaa // 要匹配的值 如果是多个用terms,如上例。
}
}
}
}
}
queryObj.bool.must.push(must_item);
bool嵌套查询
或查询
let must_item = {
"bool": {
"should": [
{
"term": {
"xxxa": {
"value": xa
}
}
},
{
"term": {
"xxxb": {
"value": xa
}
}
}
]
}
}
queryObj.bool.must.push(must_item);
对象属性聚合
let queryObj = {
"size": 0,
"aggs": {
"pv1": {
"terms": {
"size": init_length, //自定义返回多少条数据,不设置默认是10条
"field": "xxx.a" //对象名:属性名
}
}
}
}
对象数组属性聚合
{
"size": 0,
"aggs": {
"pv1": {
"nested": {
"path": "xxx"
},
"aggs": {
"pv2": {
"terms": {
"field": "xxx.xxx",
"size": 10,
"order": {
"_term": "asc"
}
}
}
}
}
}
}