SearchBlox

SearchBlox Developer Hub

Welcome to the SearchBlox developer hub. Here you will find comprehensive guides and documentation to help you start working with SearchBlox as quickly as possible, as well as support if you get stuck. Let's jump right in!

Guides

Cluster Setup

SearchBlox Cluster Setup

Cluster set up can be done directly from the SearchBlox Admin dashboard.

To create a 3-server SearchBlox Cluster (1 indexing server and 2 search servers):

  1. Install SearchBlox on three different physical or virtual servers and apply license keys.
  2. Confirm the three servers can see each other on the network.
  3. Delete all existing collections in all three servers before configuring cluster setup.

License key is required

Cluster set up requires server license keys to be applied on all servers.

Traffic must be allowed on ports 9200 and 9300 between these 3 servers, and disallow external access due to security. Open port 8080 to access the SearchBlox search service.

Traffic should be open between servers within the cluster

All traffic needs to be open between the cluster servers without any firewall restrictions.

  1. Go to Menu -> Admin -> Cluster for each server in the cluster (shown below).
  1. Make the same changes in all the SearchBlox servers within the Cluster:

Select Multi Node

  1. Add the IP addresses for servers that have to join the cluster including the current server.

Indexing Server:
Enter the IP address of the server which is to be designated as the Indexing server.

Search Server:
Enter the IP addresses of the servers which is to be designated as the Search servers.

Cluster name: (Optional)
If required, you can change the cluster name. However, please note that you need to give the same cluster name for all the servers within the same cluster.

  1. Stop SearchBlox Servers
  2. Delete the node folder in ./elasticsearch/data path
  3. Restart SearchBlox Servers in the Cluster, the order of starting could be index server first followed by search server.
  4. Please set the replicas via Elasticsearch API as below on all three servers in the cluster:
    curl -k -u admin:admin -XPUT -H 'Content-Type: application/json' 'https://<IP>:9200/_settings' -d '
    {
    "index" : {
     "number_of_replicas" : 3
    
    }
    }'

This can be done using curl command or using Postman API or Kibana.

you can check the replicas set using
curl -XGET 'http://<IP>:9200/_cluster/stats?human&pretty'
verify the replication field in the output.

Restart all SearchBlox Servers

Please restart all the servers after adding the cluster nodes and/or changing the cluster name.

  1. Once all the instances are up (which might take a few minutes), run the following command on all servers to check the cluster status:
      curl -XGET 'https://<IP>:9200/_cluster/health?pretty=true'
    
  2. If the cluster health shows a yellow or green status, then the setup has been successful.
  3. Create the same collection on both the index server and the search servers. Kick off the crawling on the indexing server, and see if the search results show up on the search servers for the same collection.

Port 9200 and 9300 should be accessible across all the three servers. Please check if https://<IP>:9200 works for all three IP (Index and search servers) in all three servers.

Indexing and Searching in Cluster

  • Indexing is possible only from the indexing server.
  • Searching is possible from both indexing and search servers.
  • If the indexing server goes down, searching is still possible through search servers until the indexing node recovers.
  • If a search server goes down, indexing and searching is possible through other servers. When the failed search server comes up, the indexed data will be replicated.

Please make sure to set up replica as 2 for 3 server cluster if you want other servers to work if one among them goes down.

Upgrade Cluster

A clean upgrade to cluster similar to standalone servers is recommended. However to reduce downtime, follow the steps below. (This upgrade will work with minor upgrades where there is no change in the Elasticsearch version in the new build.)

Upgrade

Servers have to be upgraded one by one. Upgrade the Search servers before the Indexing server.
From 9.0 you can upgrade to next version, however 8.6.9 cannot be upgraded to 9.0 as the version of elasticsearch is different. If you want to upgrade from 8.6.9 we would recommend clean installation.

  1. Block the network access from search nodes to the indexer (ports 9200/tcp and 9300/tcp). 
  2. Disable shard allocation as per Elastic documentation (found here: https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html).
  3. Upgrade SearchBlox. Start the server and check whether it joins the cluster and replication happens. If successful, proceed to Step 4.
  4. Shut down all the other search servers one by one and upgrade SearchBlox.
  5. Shut down the indexing server and upgrade SearchBlox.

The upgrade should not be made if the Elasticsearch version is different between the builds. Only clean install and cluster setup is recommended in that case. SearchBlox 9.0 uses a different Elasticsearch version when compared to its previous version 8.6.9, therefore, we recommend fresh installation and cluster setup

Cluster Setup


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.