本文是學習Learnku的 電商課程 Elasticsearch(下面將稱之爲:ES)部分的學習筆記,主要介紹常見的電商商品數據如何存入ES和查詢出來.ES做爲搜索引擎,相比數據庫的SQL搜索語句能夠實現更多豐富的篩選條件.laravel
常見的使用方法是:先按用戶的搜索條件從ES中查詢出關鍵信息(如id),而後直接列表返回給用戶,或是根據ES結果做爲SQL條件再從數據庫中查詢.sql
本文僅以DSL做爲查詢示例,不會涉及在各個編程語言中的實現代碼.shell
下面的SQL是建立商品相關表和插入數據的語句, 本文主要着重介紹的是在這種數據結構下ES的索引結構和查詢寫法,因此這些SQL不實際執行也不會影響到後面說到的DSL操做的.數據庫
# 商品信息主表 CREATE TABLE `products` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal', `category_id` bigint unsigned DEFAULT NULL, `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `long_title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `description` text COLLATE utf8mb4_unicode_ci NOT NULL, `image` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `on_sale` tinyint(1) NOT NULL DEFAULT '1', `rating` double(8,2) NOT NULL DEFAULT '5.00', `sold_count` int unsigned NOT NULL DEFAULT '0', `review_count` int unsigned NOT NULL DEFAULT '0', `price` decimal(10,2) NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `products_category_id_foreign` (`category_id`), KEY `products_type_index` (`type`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci # 端口的sku表,每一個庫存單位佔一條,如:同款手機的不一樣版本就各算做一個庫存單位,對應的價格可能也不同的,主要用來肯定貨單價和庫存的 # 與主表關聯 CREATE TABLE `product_skus` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `price` decimal(10,2) NOT NULL, `stock` int unsigned NOT NULL, `product_id` bigint unsigned NOT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `product_skus_product_id_foreign` (`product_id`), CONSTRAINT `product_skus_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=295 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci # 商品的詳細屬性,每一個屬性佔一條,不一樣商品之間容許存在同名的屬性,如:A手機的`內存`屬性值爲`8G`,主要用來展現屬性和篩選商品的 # 與主表關聯 CREATE TABLE `product_properties` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `product_id` bigint unsigned NOT NULL, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `value` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `product_properties_product_id_foreign` (`product_id`), CONSTRAINT `product_properties_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
對應的數據記錄編程
INSERT INTO `products` (`id`, `type`, `category_id`, `title`, `long_title`, `description`, `image`, `on_sale`, `rating`, `sold_count`, `review_count`, `price`, `created_at`, `updated_at`) VALUES (91, 'normal', 13, 'Kingston/金士頓 HX424C15FB/8', '金士頓 駭客神條 ddr4 2400 8g 臺式機 電腦 四代內存條 吃雞內存', '<p><img src=\"https://img.alicdn.com/imgextra/i3/704392951/TB25akyqsuYBuNkSmRyXXcA3pXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i1/704392951/TB288x6y25TBuNjSspmXXaDRVXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i1/704392951/TB2ck46y7CWBuNjy0FaXXXUlXXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB2_OV3y1uSBuNjSsziXXbq8pXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i3/704392951/TB2F9KZiP7nBKNjSZLeXXbxCFXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i4/704392951/TB2XQ06y7CWBuNjy0FaXXXUlXXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB20Tl7y4SYBuNjSspjXXX73VXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB2QygAqDdYBeNkSmLyXXXfnVXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i3/704392951/TB2C6S5qyCYBuNkHFCcXXcHtVXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB2J_pByYGYBuNjy0FoXXciBFXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB2520Ny29TBuNjy1zbXXXpepXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i4/704392951/TB2ozkLyFmWBuNjSspdXXbugXXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i4/704392951/TB2S9IFiOAnBKNjSZFvXXaTKXXa_!!704392951.jpg\" /></p><p><img alt=\"\" src=\"https://gdp.alicdn.com/imgextra/i4/704392951/TB2KpHwfviSBuNkSnhJXXbDcpXa_!!704392951.jpg\" /></p>', 'https://img.alicdn.com/bao/uploaded/i2/TB1iqkaLVXXXXagXXXXObG1FpXX_091208.jpg_b.jpg', 1, 5.00, 0, 0, '399.00', '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (92, 'normal', 13, 'AData/威剛 8G DDR4 2400 (XPG 單條) ', 'ADATA/威剛 8G 16G 3200 3000 2666 2400遊戲臺式機內存條DDR4套條', '<p><img src=\"https://img.alicdn.com/imgextra/i4/2133729733/TB2LYbVxFOWBuNjy0FiXXXFxVXa_!!2133729733.jpg\" /><br /><a href = \"https://detail.tmall.com/item.htm?spm=a1z10.5-b-s.w4011-16853183550.96.20b86fd1MBVKRL&id=40645526570&rn=d717312a898e0fb53e74b1c2db2c2232&abbucket=12\" target = \"_self\" ><img src = \"https://img.alicdn.com/imgextra/i2/2133729733/TB2zEdobrZnBKNjSZFhXXc.oXXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i1/2133729733/TB2W3VPbWmWBuNjy1XaXXXCbXXa_!!2133729733.jpg\" /></a ><br /><img src = \"https://img.alicdn.com/imgextra/i1/2133729733/TB2NLaeaQyWBuNjy0FpXXassXXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i4/2133729733/TB2hvRtfamgSKJjSsphXXcy1VXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i2/2133729733/TB2DFptaXXXXXaOXXXXXXXXXXXX_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i4/2133729733/TB2mAUhkCFjpuFjSszhXXaBuVXa_!!2133729733.jpg_q90.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i1/2133729733/TB2aU8kaXXXXXbbXpXXXXXXXXXX_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i3/2133729733/TB2Nhf8cRfM8KJjSZFrXXXSdXXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i1/2133729733/TB2h0oEhSYH8KJjSspdXXcRgVXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i2/2133729733/TB202q8gP3z9KJjy0FmXXXiwXXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i3/2133729733/TB2kRllh0nJ8KJjSszdXXaxuFXa_!!2133729733.jpg\" /><img src = \"https://img.alicdn.com/imgextra/i3/2133729733/TB2BXY3cqzB9uJjSZFMXXXq4XXa_!!2133729733.jpg\" /></p >', 'https://img.alicdn.com/bao/uploaded/i4/TB1URYGHVXXXXXsaXXXtD198VXX_032444.jpg_b.jpg', 1, 5.00, 0, 0, '489.00', '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (93, 'normal', 13, 'Kingston/金士頓 金士頓DDR3 1600 8GB', 'Kingston/金士頓 DDR3 1600 8G 臺式機電腦 三代 內存條 兼容1333', '<p><img src=\"https://img.alicdn.com/imgextra/i4/704392951/TB2Y5OKqOOYBuNjSsD4XXbSkFXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i1/704392951/TB2cQS8y29TBuNjy0FcXXbeiFXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i4/704392951/TB2GrWfqIyYBuNkSnfoXXcWgVXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB2.Onyy7yWBuNjy0FpXXassXXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i3/704392951/TB2yEnCy29TBuNjy1zbXXXpepXa_!!704392951.jpg\" /><img src=\"https://img.alicdn.com/imgextra/i2/704392951/TB2Urm1y7KWBuNjy1zjXXcOypXa_!!704392951.jpg\" /></p><p><img alt = \"\" src = \"https://gdp.alicdn.com/imgextra/i4/704392951/TB2KpHwfviSBuNkSnhJXXbDcpXa_!!704392951.jpg\" /></p >', 'https://img.alicdn.com/bao/uploaded/i5/TB1up8DGXXXXXaAaXXXszso_pXX_060025.jpg_b.jpg', 1, 5.00, 0, 0, '239.00', '2020-03-23 16:57:28', '2020-03-23 16:57:28'); INSERT INTO `product_skus` (`id`, `title`, `description`, `price`, `stock`, `product_id`, `created_at`, `updated_at`) VALUES (271, '8GB 黑色', '8GB 2400 DDR4 黑色', '549.00', 999, 91, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (272, '8GB 綠色', '8GB 2400 DDR4 綠色', '529.00', 999, 91, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (273, '16GB', '2400 16GB', '1299.00', 999, 91, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (274, '4GB', '2400 4GB', '399.00', 999, 91, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (275, '8GB DDR4 2400', '8GB DDR4 2400 XPG單條', '489.00', 999, 92, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (276, '4GB 萬紫千紅 DDR4 2133', '4GB 萬紫千紅 DDR4 2133', '489.00', 999, 92, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (277, 'DDR3 1600 8G', 'DDR3 1600 8G', '439.00', 999, 93, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (278, 'DDR3 1600 4G', 'DDR3 1600 4G', '239.00', 999, 93, '2020-03-23 16:57:28', '2020-03-23 16:57:28'), (279, 'DDR3 1333 4G', 'DDR3 1333 4G', '259.00', 999, 93, '2020-03-23 16:57:28', '2020-03-23 16:57:28'); INSERT INTO `product_properties` (`id`, `product_id`, `name`, `value`) VALUES (1, 91, '品牌名稱', '金士頓'), (2, 91, '內存容量', '8GB'), (3, 91, '傳輸類型', 'DDR4'), (4, 91, '內存容量', '4GB'), (5, 91, '內存容量', '16GB'), (6, 92, '品牌名稱', '威剛'), (7, 92, '傳輸類型', 'DDR4'), (8, 92, '內存容量', '4GB'), (9, 92, '內存容量', '8GB'), (10, 93, '品牌名稱', '金士頓'), (11, 93, '傳輸類型', 'DDR3'), (12, 93, '內存容量', '4GB'), (13, 93, '內存容量', '8GB');
下面是重點json
# 建立索引`products`,`pretty`參數表示返回的結果以美化的格式輸出 curl -XPUT http://localhost:9200/products?pretty # 設置索引的屬性,`skus`後的一個嵌套屬性`properties`並非關鍵字,是自定義的名稱,指代`product_properties`表的數據 curl -XPUT http://localhost:9200/products/_mapping/?pretty -H 'Content-Type: application/json' -d '{ "properties": { "type": { "type": "keyword" } , "title": { "type": "text", "analyzer": "ik_smart" }, "long_title": { "type": "text", "analyzer": "ik_smart" }, "category_id": { "type": "integer" }, "category": { "type": "keyword" }, "category_path": { "type": "keyword" }, "description": { "type": "text", "analyzer": "ik_smart" }, "price": { "type": "scaled_float", "scaling_factor": 100 }, "on_sale": { "type": "boolean" }, "rating": { "type": "float" }, "sold_count": { "type": "integer" }, "review_count": { "type": "integer" }, "skus": { "type": "nested", "properties": { "title": { "type": "text", "analyzer": "ik_smart", "copy_to": "skus_title" }, "description": { "type": "text", "analyzer": "ik_smart", "copy_to": "skus_description" }, "price": { "type": "scaled_float", "scaling_factor": 100 } } }, "properties": { "type": "nested", "properties": { "name": { "type": "keyword" }, "value": { "type": "keyword", "copy_to": "properties_value" }, "search_value": { "type": "keyword"} } } } }'
"analyzer": "ik_smart"
表明這個字段須要使用 IK 中文分詞器分詞,在前面的章節也介紹過了。還有有一些字段的類型是
keyword
,這是字符串類型的一種,這種類型是告訴 Elasticsearch 不須要對這個字段作分詞,一般用於郵箱、標籤、屬性等字段。數組
scaled_float
表明一個小數位固定的浮點型字段,與 Mysql 的decimal
類型相似,後面的scaling_factor
用來指定小數位精度,100 就表明精確到小數點後兩位。數據結構
skus
和properties
的字段類型是nested
,表明這個字段是一個複雜對象,由下一級的properties
字段定義這個對象的字段。有同窗可能會問,咱們的『商品 SKU』和『商品屬性』明明是對象數組,爲何這裏能夠定義成對象?這是 Elasticsearch 的另一個特性,每一個字段均可以保存多個值,這也是 Elasticsearch 的類型沒有數組的緣由,由於不須要,每一個字段均可以是數組。app
注意看skus.title
字段的定義里加入了copy_to
參數,值是skus_title
,Elasticsearch 就會把這個字段值複製到skus_title
字段裏,這樣就能夠在multi_match
的fields
裏經過skus_title
來匹配。skus.description
和properties.name
同理。
請確保 Elasticsearch 返回了
"acknowledged" : true
,不然就要檢查提交的內容是否有問題。
shell命令鏈接ES按照索引的數據結構導入3條數據curl
category
curl -XPUT http://localhost:9200/products/_doc/91?pretty -H'Content-Type: application/json' -d'{"id":91,"type":"normal","category_id":13,"title":"Kingston\/金士頓 HX424C15FB\/8","long_title":"金士頓 駭客神條 ddr4 2400 8g 臺式機 電腦 四代內存條 吃雞內存","on_sale":true,"rating":5,"sold_count":0,"review_count":0,"price":"399.00","category":["電腦配件","內存"],"category_path":"-10-","description":"","skus":[{"title":"8GB 黑色","description":"8GB 2400 DDR4 黑色","price":"549.00"},{"title":"8GB 綠色","description":"8GB 2400 DDR4 綠色","price":"529.00"},{"title":"16GB","description":"2400 16GB","price":"1299.00"},{"title":"4GB","description":"2400 4GB","price":"399.00"}],"properties":[{"name":"品牌名稱","value":"金士頓","search_value":"品牌名稱:金士頓"},{"name":"內存容量","value":"8GB","search_value":"內存容量:8GB"},{"name":"傳輸類型","value":"DDR4","search_value":"傳輸類型:DDR4"},{"name":"內存容量","value":"4GB","search_value":"內存容量:4GB"},{"name":"內存容量","value":"16GB","search_value":"內存容量:16GB"}]}' curl -XPUT http://localhost:9200/products/_doc/92?pretty -H'Content-Type: application/json' -d'{"id":92,"type":"normal","category_id":13,"title":"AData\/威剛 8G DDR4 2400 (XPG 單條) ","long_title":"ADATA\/威剛 8G 16G 3200 3000 2666 2400遊戲臺式機內存條DDR4套條","on_sale":true,"rating":5,"sold_count":0,"review_count":0,"price":"489.00","category":["電腦配件","內存"],"category_path":"-10-","description":"","skus":[{"title":"8GB DDR4 2400","description":"8GB DDR4 2400 XPG單條","price":"489.00"},{"title":"4GB 萬紫千紅 DDR4 2133","description":"4GB 萬紫千紅 DDR4 2133","price":"489.00"}],"properties":[{"name":"品牌名稱","value":"威剛","search_value":"品牌名稱:威剛"},{"name":"傳輸類型","value":"DDR4","search_value":"傳輸類型:DDR4"},{"name":"內存容量","value":"4GB","search_value":"內存容量:4GB"},{"name":"內存容量","value":"8GB","search_value":"內存容量:8GB"}]}' curl -XPUT http://localhost:9200/products/_doc/93?pretty -H'Content-Type: application/json' -d'{"id":93,"type":"normal","category_id":13,"title":"Kingston\/金士頓 金士頓DDR3 1600 8GB","long_title":"Kingston\/金士頓 DDR3 1600 8G 臺式機電腦 三代 內存條 兼容1333","on_sale":true,"rating":5,"sold_count":0,"review_count":0,"price":"239.00","category":["電腦配件","內存"],"category_path":"-10-","description":"","skus":[{"title":"DDR3 1600 8G","description":"DDR3 1600 8G","price":"439.00"},{"title":"DDR3 1600 4G","description":"DDR3 1600 4G","price":"239.00"},{"title":"DDR3 1333 4G","description":"DDR3 1333 4G","price":"259.00"}],"properties":[{"name":"品牌名稱","value":"金士頓","search_value":"品牌名稱:金士頓"},{"name":"傳輸類型","value":"DDR3","search_value":"傳輸類型:DDR3"},{"name":"內存容量","value":"4GB","search_value":"內存容量:4GB"},{"name":"內存容量","value":"8GB","search_value":"內存容量:8GB"}]}'
# 直接用curl進行查詢請求 curl -XGET http://localhost:9200/products/_search/?pretty -H 'Content-Type: application/json' -d '{ "query": { "bool": { "filter": [ { "term": { "on_sale": true } } ], "must": [ { "multi_match": { "query": "金士頓", "type": "best_fields", "fields": [ "title^3", "long_title^2", "category^2", "description", "skus_title", "skus_description", "properties_value" ] } } ] } }, "aggs": { "properties_count": { "nested": { "path": "properties" }, "aggs": { "properties_name": { "terms": { "field": "properties.name" }, "aggs": { "properties_value": { "terms": { "field": "properties.value" } } } } } } } }'
對上面DSL語句的一些解釋:
金士頓
做爲關鍵字在多個字段中進行查詢,title^3
表示提高從title
字段查詢出來的結果的權重properties_count
是自定義的聚合結果名稱,同理後面的properties_*
亦然properties_count
聚合的做用是至關於在查詢出來的結果中,將嵌套屬性properties
所有查詢出來properties_name
是在上一層的基礎上按properties.name
即屬性名分組properties_value
同理,在上一層的基礎上按屬性值分組查詢結果:
{ "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 1.9678952, "hits" : [ { "_index" : "products", "_type" : "_doc", "_id" : "93", "_score" : 1.9678952, "_source" : { "id" : 93, "type" : "normal", "category_id" : 13, "title" : "Kingston/金士頓 金士頓DDR3 1600 8GB", "long_title" : "Kingston/金士頓 DDR3 1600 8G 臺式機電腦 三代 內存條 兼容1333", "on_sale" : true, "rating" : 5, "sold_count" : 0, "review_count" : 0, "price" : "239.00", "category" : [ "電腦配件", "內存" ], "category_path" : "-10-", "description" : "", "skus" : [ { "title" : "DDR3 1600 8G", "description" : "DDR3 1600 8G", "price" : "439.00" }, { "title" : "DDR3 1600 4G", "description" : "DDR3 1600 4G", "price" : "239.00" }, { "title" : "DDR3 1333 4G", "description" : "DDR3 1333 4G", "price" : "259.00" } ], "properties" : [ { "name" : "品牌名稱", "value" : "金士頓", "search_value" : "品牌名稱:金士頓" }, { "name" : "傳輸類型", "value" : "DDR3", "search_value" : "傳輸類型:DDR3" }, { "name" : "內存容量", "value" : "4GB", "search_value" : "內存容量:4GB" }, { "name" : "內存容量", "value" : "8GB", "search_value" : "內存容量:8GB" } ] } }, { "_index" : "products", "_type" : "_doc", "_id" : "91", "_score" : 1.6602381, "_source" : { "id" : 91, "type" : "normal", "category_id" : 13, "title" : "Kingston/金士頓 HX424C15FB/8", "long_title" : "金士頓 駭客神條 ddr4 2400 8g 臺式機 電腦 四代內存條 吃雞內存", "on_sale" : true, "rating" : 5, "sold_count" : 0, "review_count" : 0, "price" : "399.00", "category" : [ "電腦配件", "內存" ], "category_path" : "-10-", "description" : "", "skus" : [ { "title" : "8GB 黑色", "description" : "8GB 2400 DDR4 黑色", "price" : "549.00" }, { "title" : "8GB 綠色", "description" : "8GB 2400 DDR4 綠色", "price" : "529.00" }, { "title" : "16GB", "description" : "2400 16GB", "price" : "1299.00" }, { "title" : "4GB", "description" : "2400 4GB", "price" : "399.00" } ], "properties" : [ { "name" : "品牌名稱", "value" : "金士頓", "search_value" : "品牌名稱:金士頓" }, { "name" : "內存容量", "value" : "8GB", "search_value" : "內存容量:8GB" }, { "name" : "傳輸類型", "value" : "DDR4", "search_value" : "傳輸類型:DDR4" }, { "name" : "內存容量", "value" : "4GB", "search_value" : "內存容量:4GB" }, { "name" : "內存容量", "value" : "16GB", "search_value" : "內存容量:16GB" } ] } } ] }, "aggregations" : { "properties_count" : { "doc_count" : 9, "properties_name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "內存容量", "doc_count" : 5, "properties_value" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "4GB", "doc_count" : 2 }, { "key" : "8GB", "doc_count" : 2 }, { "key" : "16GB", "doc_count" : 1 } ] } }, { "key" : "傳輸類型", "doc_count" : 2, "properties_value" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "DDR3", "doc_count" : 1 }, { "key" : "DDR4", "doc_count" : 1 } ] } }, { "key" : "品牌名稱", "doc_count" : 2, "properties_value" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "金士頓", "doc_count" : 2 } ] } } ] } } } }