我们的需求,唯一不变的,就是一直在变化。我们先来看需求,我们需要从一个配件名,找到不同品牌和单位的配件并进行展示,但是因为数据里面有太多的杂乱和重复数据,所以这里需要对多个条件进行聚合查询。
因为没有在一开始创建好查询的字段,所以我们这里使用script来拼字段内容,script支持多种语言。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html
localhost/索引名/_search
POST 提交
{
"query":{
"bool":{
"must":{
"wildcard":{"字段名":"*主查找内容*"}
}
}
},
"aggs": {
"自定义名称": {
"terms": {
"script": {
"inline": "doc['需要聚合的字段名1'].value+' '+doc['需要聚合的字段名2'].value +' '+doc['需要聚合的字段名3'].value"
}
}
}
}
}
执行后看看我们的 aggregations
"buckets": [
{"key": "字段1字段2字段3","doc_count": 15},
{"key": "字段1字段2字段3","doc_count": 5},
{"key": "字段1字段2字段3","doc_count": 3}
]
如果执行提示需要对字段设置 fielddata=true , 那可以先执行下面的字段进行设置,再执行查询
localhost/索引名/_mapping/text/?update_all_types
POST 提交
{
"字段类型(如text)":
{
"properties":
{
"提示需要设置的字段名":{
"type":"类型(如text)",
"fielddata":true
}
}
}
}
网友评论