各位大神
最近在学习使用elasticsearch,公司有个需求,研究了半个月也没解决,希望大神指点,如果能解决问题,必有重谢
hotel酒店表字段:id,name
inventory房态表字段:id,hotelId,roomId,policyId,date,price,payType
(一个hotelId可能包含多个roomId、也可能没有,一个roomId可能包含多个policyId、也可能没有,每个酒店的单个房型的单个政策当天最多只有一天记录)
需求:查询2018-01-12到2018-01-14间的酒店,有房的排在前面,因为需要用到price和payType字段所以这两个字段也要查出来。
SELECT h.id,h.name,IF(k.hotelId == null,0,1) as haveRoom,k.price,k.payType from hotel h LEFT JOIN (
SELECT hotelId,price,payType from (
SELECT hotelId,COUNT(1) as num,price,payType from inventory
WHERE date >= '2018-01-12' and date < '2018-01-14'
GROUP BY hotelId,roomId,policyId
ORDER BY hotelId,price asc)t
WHERE num = 2
GROUP BY hotelId)k
on h.id = k.hotelId
ORDER BY haveRoom desc
LIMIT 10
这个需求怎么用elasticsearch实现
最近在学习使用elasticsearch,公司有个需求,研究了半个月也没解决,希望大神指点,如果能解决问题,必有重谢
hotel酒店表字段:id,name
inventory房态表字段:id,hotelId,roomId,policyId,date,price,payType
(一个hotelId可能包含多个roomId、也可能没有,一个roomId可能包含多个policyId、也可能没有,每个酒店的单个房型的单个政策当天最多只有一天记录)
需求:查询2018-01-12到2018-01-14间的酒店,有房的排在前面,因为需要用到price和payType字段所以这两个字段也要查出来。
SELECT h.id,h.name,IF(k.hotelId == null,0,1) as haveRoom,k.price,k.payType from hotel h LEFT JOIN (
SELECT hotelId,price,payType from (
SELECT hotelId,COUNT(1) as num,price,payType from inventory
WHERE date >= '2018-01-12' and date < '2018-01-14'
GROUP BY hotelId,roomId,policyId
ORDER BY hotelId,price asc)t
WHERE num = 2
GROUP BY hotelId)k
on h.id = k.hotelId
ORDER BY haveRoom desc
LIMIT 10
这个需求怎么用elasticsearch实现
0 个回复