Yes. The basic rule is “if it takes capacity of the team to get the work done, then it should be visible in the Backlog and have an estimate.”
Estimates and velocity help Teams to understand the capacity of the Team and reason about how much work a Team can take on. Further they provide Product Managers and Product Owners with the data needed to provide forecasts and roadmaps. In order to be used this way Team's need to ensure that anything that takes up capacity is represented in the Backlog so that:
This means that Spikes, and everything else such as Bugs, should have an estimate.