我想在品牌领域汇总,并给我两个结果,而不是一个
brands_aggs从这个文本中找到了我
2结果
Private Sub PolBX_AfterUpdate()
End Sub
和Brand
但为什么我只需要1
与品牌一词分开,1与(品牌1)
分开并且在聚合中给我2个结果
Brand 1
mapping = {
"mappings": {
"product": {
"properties": {
"categories": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"fielddata": True
}
"brand": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"fielddata": True
}
}
}
}
}
来自服务器的{
"query" : {
"bool": {
"must": [
{"match": { "categories": "AV8KW5Wi31qHZdVeXG4G" }}
]
}
},
"size" : 0,
"aggs" : {
"brand_aggs" : {
"terms" : { "field" : "brand" }
},
"categories_aggs" : {
"terms" : { "field" : "categories" }
}
}
}
答案 0 :(得分:1)
您的映射具有属性字段,当您希望为同一字段使用多个分析器时,将使用这些属性字段。在您的情况下,您的字段的有效名称是“brand.keyword”。当您为“品牌”调用聚合时,它使用为字符串定义的默认映射。
所以你的查询应该是:
{
"query" : {
"bool": {
"must": [
{"match": { "categories": "AV8KW5Wi31qHZdVeXG4G" }}
]
}
},
"size" : 0,
"aggs" : {
"brand_aggs" : {
"terms" : { "field" : "brand.keyword" }
},
"categories_aggs" : {
"terms" : { "field" : "categories.keyword" }
}
}
}
当您想要搜索多个分析器的相同属性时,属性字段非常有用,例如:
"full_name": {
"type": "text",
"analyzer": "standard",
"boost": 1,
"fields": {
"autocomplete": {
"type": "text",
"analyzer": "ngram_analyzer"
},
"standard":{
"type": "text",
"analyzer": "standard"
}
}
},
答案 1 :(得分:0)
您需要将字符串映射为not_analyzed字符串,为此运行以下查询
PUT your_index/_mapping/your_type
{
"your_type": {
"properties": {
"brand": {
"type": "string",
"index": "analyzed",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
请勿忘记将your_type
和your_index
替换为您的类型和索引值。