[英]How to aggregate a 'non - keyword' field in elasticsearch?
我正在嘗試編寫一個彈性搜索查詢,該查詢應列出文檔中各個字段所持有的所有不同值。當字段類型為關鍵字時,術語聚合查詢工作正常,我可以看到值列出的值但是,當我查詢不同的柑橘類水果類型時,我沒有得到任何結果,映射如下所示:
{
"vegetables":{
"type": "text",
"fields": {
"keyword" : {
"type" : "keyword",
"ignore_above": 256
}
}
},
"fruits": {
"properties": {
"citrus": {
"properties": {
"orange": {
"type": "long"
},
"lemon": {
"type": "long"
},
"kiwi": {
"type": "long"
}
}
}
}
}
}
而我期待的結果是:
"aggregations": {
"distinct_citrusy_fruits"{
"buckets" : [
{
"key":"oranges",
"doc_count": 23
},
{
"key":"lemon",
"doc_count": 21
},
{
"key":"kiwi",
"doc_count": 23
}
]
}
}
當我為“vegetables”字段(這是一個關鍵字類型)創建一個術語聚合時,我能夠獲得如上所述的桶。 在這種情況下如何獲得不同的計數?此外,我沒有更改文檔格式的選項。
編輯 - 我到目前為止唯一的解決方法是調用映射api,然后在我的代碼中解析嵌套的JSON以獲取鍵值,如果有更好的解決方案,請在此處添加答案。
我認為你不能在字段名稱上查詢或運行聚合,只能在值上查詢或運行聚合。 對於水果我期望以下映射:
{
"fruits": {
"properties": {
"citrus": {
"properties": {
"kind": {
"type": "keyword"
},
"count": {
"type": "long"
}
}
}
}
}
}
也許你可以使用包含每個具有值的字段名的_field_names字段。 ( https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-field-names-field.html )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.