This article shows how to use index warmers with ElasticsearchCRUD. Warmers are useful for the most used queries, and can help with performance. A warmer can be added when creating an index, added any time after or deleted from an index. Warmers can also be added globally or per index type.
Code: https://github.com/damienbod/ElasticsearchWarmers
Other Tutorials:
Part 1: ElasticsearchCRUD introduction
Part 2: MVC application search with simple documents using autocomplete, jQuery and jTable
Part 3: MVC Elasticsearch CRUD with nested documents
Part 4: Data Transfer from MS SQL Server using Entity Framework to Elasticsearch
Part 5: MVC Elasticsearch with child, parent documents
Part 6: MVC application with Entity Framework and Elasticsearch
Part 7: Live Reindex in Elasticsearch
Part 8: CSV export using Elasticsearch and Web API
Part 9: Elasticsearch Parent, Child, Grandchild Documents and Routing
Part 10: Elasticsearch Type mappings with ElasticsearchCRUD
Part 11: Elasticsearch Synonym Analyzer using ElasticsearchCRUD
Part 12: Using Elasticsearch German Analyzer
Part 13: MVC google maps search using Elasticsearch
Part 14: Search Queries and Filters with ElasticsearchCRUD
Part 15: Elasticsearch Bulk Insert
Part 16: Elasticsearch Aggregations With ElasticsearchCRUD
Part 17: Searching Multiple Indices and Types in Elasticsearch
Part 18: MVC searching with Elasticsearch Highlighting
Part 19: Index Warmers with ElasticsearchCRUD
Adding a warmer when creating an index
A warmer can be added to an index when creating it. The IndexCreate method provides a Warmers property function for this. The Warmers list can accept queries or aggregations.
_context.IndexCreate<FastestAnimal>( new IndexDefinition { IndexWarmers = new IndexWarmers { Warmers = new List<IndexWarmer> { new IndexWarmer("filter_mph") { Query= new Query( new Filtered( new Filter( new RangeFilter("speeddoublemph") { GreaterThanOrEqualTo= 50.0 } ) ) ) } } } } );
The index put with the warmer is set to Elasticsearch in a HTTP PUT request
PUT http://localhost:9200/fastestanimals HTTP/1.1 Content-Type: application/json Host: localhost:9200 Content-Length: 198 Expect: 100-continue { "settings": { "analysis": { }, "number_of_shards": 5, "number_of_replicas": 1 }, "aliases": { }, "warmers": { "filter_mph": { "source": { "query": { "filtered": { "filter": { "range": { "speeddoublemph": { "gte": 50.0 } } } } } } } } }
Creating a warmer for an existing index
A warmer can be added to an index using the WarmerCreate method. If the index parameter is defined, it is and to the index with the all name.
_context.WarmerCreate(new Warmer("all") { Query = new Query( new MatchAllQuery() ) }, "fastestanimals");
The warmer is added to the index using a HTTP PUT request
PUT http://localhost:9200/fastestanimals/_warmer/all HTTP/1.1 Content-Type: text/plain; charset=utf-8 Host: localhost:9200 Content-Length: 26 Expect: 100-continue {"query":{"match_all":{}}}
Deleting a warmer
A warmer can also be deleted from a index:
_context.WarmerDelete("all", "fastestanimals");
Sent as follows:
DELETE http://localhost:9200/fastestanimals/_warmer/all HTTP/1.1 Host: localhost:9200 Content-Length: 0
Links:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-warmers.html
Reblogged this on Dinesh Ram Kali..