我在排序脚本中使用_source字段,根据涉及多级嵌套字段的复杂逻辑对文档进行排序。但是accessing _source from disk for each matched document is performing poorly, giving me ~ 3 sec response times.
有没有办法通过在内存中缓存_source字段来改善这一点?我愿意为更多的内存付费,以便改善延迟。如果没有,是否可以扩展elasticsearch以自己构建/使用此缓存?
编辑: 这是我的用例:我的酒店文档有多个房间,每个房间都有明智的价格和库存。
hotel > rooms > dailyPriceInventories
我在所有三个级别都有过滤器。说酒店有5星评级,房间有"免费无线网络"舒适度和日期d1-d2以及价格p1-p2之间的库存为2。
现在要进行排序,我想从所有匹配的嵌套文档中计算最低价格。但是对于常规排序这是不可能的,因为我无法在其中的多个嵌套级别上指定过滤器。所以我必须利用脚本排序。但是在访问嵌套级别字段的脚本中只能使用_source字段。
映射:
"hotel": {
"properties": {
"name": {
"type": "string",
},
"id": {
"type": "string",
},
"roomTypes": {
"type": "nested",
"properties": {
"roomCode": {
"type": "string",
"index": "not_analyzed",
},
"roomType": {
"type": "string",
"index": "not_analyzed",
},
"amenities": {
"type": "string",
"index": "not_analyzed",
},
"invPrice": {
"type": "nested",
"properties": {
"date": {
"type": "date",
"format": "dateOptionalTime",
},
"inventory": {
"type": "integer",
},
"price": {
"type": "double",
}
}
}
}
},
"starRating": {
"type": "short",
}
}
}