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
}
}
当有多台服务器/机器用于插入/搜索/删除操作和冗余时,使用多个碎片和副本是有效的。我在弹性搜索数据库中有更多数据,如果我将所有数据都放在一个碎片中,它将变得太慢,无法满足搜索请求。参考资料:-[链接]