After setting up 5 different On-Premise servers for EPiServer Find I started writing down some notes on how to set it up and some gotchas I had a long the way.
EPiServer Find On-Premise requires Java to run. It can run just as fine on both Linux and Windows servers.
After ordering a license for the On-Premise version of EPiServer Find I got a zip file containing the files required to run EPiServer Find On-Premise.
The setup is quite straight forward, below are the steps:
I installed this on a Windows 2012 Server where I had to install Java first (64 bit) and configure the Java system variables for Windows. Here's a good guide on Setting the JAVA_HOME Variable in Windows (you might need to restart Windows for the changes to take affect).
Run Powershell as Administrator go to the root EPiServer Find Service folder and run InstallEPiServerFindElasticsearch.cmd. It will prompt you for how much memory you want to set aside for ElasticSeearch, and the path to data and log folder.
It is recommended to set up the system with maximum 50% of the available RAM, and leave the rest available for the OS and file system.
Gotcha: If the server is running a 64 bit OS make sure to install the 64 bit version of Java.
You need to open up local service and start EPiServer Find Service (make sure startup type is set to automatic).
Browse to http://localhost:9200/ and make sure you get something back. This means ElasticSearch is running and working.
EPiServer has their own admin interface: http://localhost:9200/_plugin/episerver-elasticsearch-admin/.
Here you can create new indexes, get an overview over existing indexes, their status and health.
Note that if you have multiple find servers in the same network they will try and connect to eachother as a cluster. By default their cluster.name is episerverfind. To solve this change their name in config/elasticsearch.yml, change the cluster.name setting and give it a different name. Restart the service for the changes to take affect.
Using the admin interface you can easily create new indexes.
You can then use the normal client NuGet packages for EPiServer Find to work with the index. Just update your web.config to point to http://server-name-or-ip:9200 and set index to your index name.
Example: <episerver.find serviceUrl=”http://server-name:9200” defaultIndex=”mytestindex”/>
In admin mode you can get an overview over the health of your index. If it's red it means something is wrong. Click on the Head link in the top menu and look at the shards for each index. By default there should be 5 green shards for each healthy index (depending on how many shards you've configured when creating your index). If they're missing you should re-create the index. This is also why I typically make sure to always be able to re-index all the data in an EPiServer Find index and not use it as a database.
From the Actions drop down you can delete an index, I recommend restarting Find after doing that before re-creating the index if you use the same name.
You can set a side memory for EPiServer Find. The recommendation is around 50% of the available memory. Make sure that keep enough for the OS. If possible try and use SSD disks. If you're running virtual servers make sure that the CPU's and memory is reserved and not dynamic.
In EPiServer 7.5 with the new file system a lot more data will be indexed. This means that you might have to increase the memory. I had a case where we got a lot of OutOfMemoryExceptions and the CPU was jumping up to close to 100% mark. The case here was that Find had problems indexing PDF documents. Solution was to increase available memory for EPiServer Find. When the problem occured EPiServer Find was already using 95% of the memory we had set aside for it, on this particular server it had only 3GB.
If you experience any problems EPiServer Find logs quite alot of useful data in the logs folder.