{"action":"created","issue":{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9331","labels_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9331/labels{/name}","comments_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9331/comments","events_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9331/events","html_url":"https://github.com/elasticsearch/elasticsearch/issues/9331","id":54558889,"number":9331,"title":"Re-evaluate warmers ","user":{"login":"martijnvg","id":580421,"avatar_url":"https://avatars.githubusercontent.com/u/580421?v=3","gravatar_id":"","url":"https://api.github.com/users/martijnvg","html_url":"https://github.com/martijnvg","followers_url":"https://api.github.com/users/martijnvg/followers","following_url":"https://api.github.com/users/martijnvg/following{/other_user}","gists_url":"https://api.github.com/users/martijnvg/gists{/gist_id}","starred_url":"https://api.github.com/users/martijnvg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martijnvg/subscriptions","organizations_url":"https://api.github.com/users/martijnvg/orgs","repos_url":"https://api.github.com/users/martijnvg/repos","events_url":"https://api.github.com/users/martijnvg/events{/privacy}","received_events_url":"https://api.github.com/users/martijnvg/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/labels/:Warmers","name":":Warmers","color":"009800"},{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/labels/adoptme","name":"adoptme","color":"207de5"},{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/labels/enhancement","name":"enhancement","color":"4a4ea8"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-01-16T10:08:14Z","updated_at":"2015-02-02T13:43:10Z","closed_at":null,"body":"Warmers are great, but have to be used with caution, because you may end up caching things that are never end up being used and picking the right search request is not always straight forward. Also running the query phase of a search request you may end up doing more work for warming then is required for caching purposes.\r\n\r\nNowadays we have:\r\n* eager field data loading\r\n* eager norms loading\r\n* filter cache from 2.0 has been improved the only auto cache after a filter has been used a couple of times to make sure useless entries don't make it in the filter cache.\r\n\r\nWarmers were added (around version 0.20) long before the above features/improvements were created. The only other benefit I can think of warmers give us, is that it warms up the inverted index, but this can also be done in a similar way Lucene's `SimpleMergedSegmentWarmer` is warming up (filling up the filesystem cache) the index. The `SimpleMergedSegmentWarmer` also access part of the term dictionary instead of running a query what would happen with warmers. I think just warming up the term directory is sufficient for warmers, also warming up the posting list may be too much as big chucks may end up never being accessed.\r\n\r\nMaybe we should add a `eager_loading` option to field mappings, which can have the following options: `fielddata`, `norms` and `index`. (multiple values can be specified) This option will then supersede the other eager loading options."},"comment":{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/comments/72459411","html_url":"https://github.com/elasticsearch/elasticsearch/issues/9331#issuecomment-72459411","issue_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9331","id":72459411,"user":{"login":"jpountz","id":299848,"avatar_url":"https://avatars.githubusercontent.com/u/299848?v=3","gravatar_id":"","url":"https://api.github.com/users/jpountz","html_url":"https://github.com/jpountz","followers_url":"https://api.github.com/users/jpountz/followers","following_url":"https://api.github.com/users/jpountz/following{/other_user}","gists_url":"https://api.github.com/users/jpountz/gists{/gist_id}","starred_url":"https://api.github.com/users/jpountz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpountz/subscriptions","organizations_url":"https://api.github.com/users/jpountz/orgs","repos_url":"https://api.github.com/users/jpountz/repos","events_url":"https://api.github.com/users/jpountz/events{/privacy}","received_events_url":"https://api.github.com/users/jpountz/received_events","type":"User","site_admin":false},"created_at":"2015-02-02T13:43:10Z","updated_at":"2015-02-02T13:43:10Z","body":"I hate lazy loading too (I really do), but I think the point of lazy loading is more about lots of seldomly used fields than indices. And this is unfortunately common due to the fact that our dynamic mappings generate analyzed string fields that have enabled norms by default."}}