如何在ElasticSearch中从对象数组获取指定元素
需求说明
我有一个products索引,其中包含**offers字段,该字段是一个对象数组。我希望通过seller_id**(示例值为5)筛选出单个offer,结果可以保留在原数组中,也可以存入新的字段里。
输入
当seller_id=5时,原始数据如下:
{"_index":"dev_products","_type":"_doc","_id":"138","_score":1.0,"_source":{"is_adult":false,"status_id":3,"allow_publish":false,"name":"Consequuntur expedita sit perferendis est.","category_id":816,"brand_id":363,"description":"Nec.","type":3,"vendor_code":"4968258909901","barcode":"98735976","code":"consequuntur-expedita-sit-perferendis-est","updated_at":"2022-11-15T10:42:33.000000Z","created_at":"2022-11-15T10:42:33.000000Z","id":138,"offers":[{"product_id":"138","seller_id":"1","sale_status":"2","external_id":"1267631","store_id":"2","qty":"44","storage_address":"","base_price":"312.84","updated_at":"2022-11-15T10:42:49.000000Z","created_at":"2022-11-15T10:42:49.000000Z","id":74},{"product_id":"138","seller_id":"2","sale_status":"1","external_id":"2795841","store_id":"2","qty":"1","storage_address":"","base_price":"1812.3","updated_at":"2022-11-15T10:44:50.000000Z","created_at":"2022-11-15T10:44:50.000000Z","id":76},{"product_id":"138","seller_id":"3","sale_status":"1","external_id":"32219","store_id":"1","qty":"32","storage_address":"","base_price":"1556.25","updated_at":"2022-11-15T10:50:16.000000Z","created_at":"2022-11-15T10:50:16.000000Z","id":77},{"product_id":"138","seller_id":"4","sale_status":"1","external_id":"967427","store_id":"1","qty":"35","storage_address":"","base_price":"137.62","updated_at":"2022-11-15T10:50:18.000000Z","created_at":"2022-11-15T10:50:18.000000Z","id":78},{"product_id":"138","seller_id":"5","sale_status":"2","external_id":"209466","store_id":"1","qty":"45","storage_address":"","base_price":"187.03","updated_at":"2022-11-15T10:50:19.000000Z","created_at":"2022-11-15T10:50:19.000000Z","id":79},{"product_id":"138","seller_id":"6","sale_status":"1","external_id":"522912","store_id":"1","qty":"61","storage_address":"","base_price":"306.39","updated_at":"2022-11-15T10:50:20.000000Z","created_at":"2022-11-15T10:50:20.000000Z","id":80}]}}
预期输出
{"_index":"dev_products","_type":"_doc","_id":"138","_score":1.0,"_source":{"is_adult":false,"status_id":3,"allow_publish":false,"name":"Consequuntur expedita sit perferendis est.","category_id":816,"brand_id":363,"description":"Nec.","type":3,"vendor_code":"4968258909901","barcode":"98735976","code":"consequuntur-expedita-sit-perferendis-est","updated_at":"2022-11-15T10:42:33.000000Z","created_at":"2022-11-15T10:42:33.000000Z","id":138,"offers":[{"product_id":"138","seller_id":"5","sale_status":"2","external_id":"209466","store_id":"1","qty":"45","storage_address":"","base_price":"187.03","updated_at":"2022-11-15T10:50:19.000000Z","created_at":"2022-11-15T10:50:19.000000Z","id":79}]}}
或预期输出
{"_index":"dev_products","_type":"_doc","_id":"138","_score":1.0,"_source":{"is_adult":false,"status_id":3,"allow_publish":false,"name":"Consequuntur expedita sit perferendis est.","category_id":816,"brand_id":363,"description":"Nec.","type":3,"vendor_code":"4968258909901","barcode":"98735976","code":"consequuntur-expedita-sit-perferendis-est","updated_at":"2022-11-15T10:42:33.000000Z","created_at":"2022-11-15T10:42:33.000000Z","id":138,"offer":{"product_id":"138","seller_id":"5","sale_status":"2","external_id":"209466","store_id":"1","qty":"45","storage_address":"","base_price":"187.03","updated_at":"2022-11-15T10:50:19.000000Z","created_at":"2022-11-15T10:50:19.000000Z","id":79}}}}
感谢帮助!
内容的提问来源于stack exchange,提问作者Сафар Умаров
相关产品推荐
相关产品推荐

