如何对包含空格的属性名称执行elasticsearch聚合

时间:2018-05-11 10:35:52

标签: elasticsearch lucene

我正在尝试在属性名称上运行聚合,其中包含空格。 所以这是搜索的查询主体

{
  "size": 0,
  "aggs": {
    "categoryId": {
      "filter": {
        "bool": {
          "filter": [
            {
              "term": {
                "title.list": "iphone"
              }
            }
          ]
        }
      },
      "aggs": {
        "results": {
          "terms": {
            "field": "category.l3.id",
            "size": 4
          },
          "aggs": {
            "categoryName": {
              "terms": {
                "field": "category.l3.id.keyword",
                "size": 1
              }
            }
            "Operating_System": {
              "terms": {
                "field": "detail.attribute.Operating System.raw",
                "size": 9
              }
            }
          }
        }
      }
    }
  }
}

正如您可以看到属性名称"操作系统"有一个空间。我试过这样跑

"field": "detail.attribute['Operating System'].raw"

它仍然无法运作。我该如何解决? 这是映射

 "detail": {
    "properties": {        
        "attribute": {
            "dynamic": "true",
            "properties": {               
                "Operating System": {
                    "type": "text",
                    "fields": {
                        "raw": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。显然,物业名称中的空间是合法的。

"Operating_System": {
              "terms": {
                "field": "detail.attribute.Operating System.raw",
                "size": 9
              }
            }

我不知道之前它是如何工作的,也许我错过了一些东西,但这个查询会返回一个回复