elasticsearch,Node.js,elasticsearch" /> elasticsearch,Node.js,elasticsearch" />

Node.js 如何在node js中以更短的时间获得以下弹性搜索数据库结构的结果?

Node.js 如何在node js中以更短的时间获得以下弹性搜索数据库结构的结果?,node.js,elasticsearch,Node.js,elasticsearch,我有一套过滤器数据,如下格式 filters = [ {key : colour, values: [red,blue,green,yellow,........]}, {key:website, values:[myntra, jabong, voonik,...........]}, {key:shape,values:[fit, maxi,bodycon, skater...................]} ,........................ ,..

我有一套过滤器数据,如下格式

filters = [  
{key : colour, values: [red,blue,green,yellow,........]},  
{key:website, values:[myntra, jabong, voonik,...........]},  
{key:shape,values:[fit, maxi,bodycon, skater...................]}  
,........................  
,........................]
我的弹性搜索数据库结构是

{  
"_index": "products_data",  
"_type": "dresses",  
"_id": "1",  
"_score": 0,  
"_source": {  
"product_filter":{  
    "dress_shape": "sheath",  
    "pattern_type": "solid",  
    "discount_price": 1347,  
    "knit_or_woven": "knit",  
    "year": "2015",  
    "age_group": "adults-women",  
    "broad_category": "dress",  
    "fabric": "polyester",    
    "lining": "has a lining",  
    "surface_styling_or_features": "other",  
    "usage": "casual",  
    "sleeves_type": "sleeveless",  
    "brand": "deal jeans",  
    "website": "myntra",  
    "season": "fall",  
    "price": 2695,  
    "discount_percent": 50,  
    "product_line": "dresses",  
    "neck": "round neck",  
    "sleeve": "sleeveless",  
    "gender": "women",  
    "colour": "black",  
    "occasion": "casual",  
    "dress_length": "mini",  
    "display_name": "deal jeans black sheath dress",  
    "hemline": "curved",  
    "fabric_type": "lace or crochet"  
    }  
  }  
} 
我需要找到每个筛选器计数,如下所示。 目前,我正在使用每个过滤器,生成一个如下格式的弹性搜索查询,并将此查询发送到弹性搜索计数api以获取计数

{ "query": { "bool": { "filter":{ "term": { "product_filter.brand": "109f" } } } } }

output :  109f brand --> 2132
我在每个过滤器列表中有更多的数据。给出500个过滤器的计数大约需要6秒钟。
我尝试了多搜索api(msearch api),但也花了很多时间。我的数据大小是19787033681字节,它有5个碎片。
有人能帮我解决这个问题吗,使用node js code…

我给你的建议是将碎片数量从5个减少到1个。除非您有多台机器处理相同的数据或希望处理集群,否则您应该只处理一个碎片

{
   "settings":{
       "number_of_shards":1,
       "number_of_replicas":0
   }
}

当有多台服务器/机器用于插入/搜索/删除操作和冗余时,使用多个碎片和副本是有效的。

我在弹性搜索数据库中有更多数据,如果我将所有数据都放在一个碎片中,它将变得太慢,无法满足搜索请求。参考资料:-[链接]