Skip to content

Backgrounds

How-to Guides

Technical References

Enterprise Search /

Versioning with Enterprise Search

If you need to re-index, and do not want to drop the current index, follow the below steps in creating a new index, ensuring it is healthy, and activating it.

1) Register a new index

This will create a new index for post content (this will also work with other Indexables such as term):

$ wp vip-search index-versions add post
Success: Registered and created new index version 2

The response will include the version number added (in this case, 2).

A new index version has been added and created (with mapping) on Elasticsearch. The current active version will continue to receive incremental changes as well.

Note

This does not do any bulk indexing of content, but it will start the indexing of incremental changes to the new version.

2) Build the new index

Now, build the new index alongside the current one (depending on the size of the database, this may take some time).

In the command, specify a version:

$ wp vip-search index --indexables="post" --version="next"
Indexing posts...
Processed 500/37674. Last Object ID: 37550
Processed 1000/37674. Last Object ID: 37050
Processed 1500/37674. Last Object ID: 36550
...
Processed 37674/37674. Last Object ID: 1
Number of posts indexed: 37674
Total time elapsed: 492.615
Success: Done!

3) Health check

Check the status of the indexes (both the current and next):

$ wp vip-search health validate-counts
Validating post count

✅ no inconsistencies found when counting entity: post, type: post, index_version: 1 - (DB: 37498, ES: 37498, Diff: 0)
✅ no inconsistencies found when counting entity: post, type: page, index_version: 1 - (DB: 176, ES: 176, Diff: 0)
✅ no inconsistencies found when counting entity: post, type: post, index_version: 2 - (DB: 37498, ES: 37498, Diff: 0)
✅ no inconsistencies found when counting entity: post, type: page, index_version: 2 - (DB: 176, ES: 176, Diff: 0)

Note

There is also a query parameter that can be used to verify search results before activating the new version. To use that add vip_search_<indexable>_version parameter to your URL.

As an example, if you would like to run a search against the next index on posts you could navigate to an URL similar to:


https://my.site.com/?s=<search-term>&vip_search_post_version=next

4) Activate the new index

Once the new index version shows that it is in sync (“healthy”), it can be activated.

The active index is the one that serves site traffic (queries), so be sure the target index is ready for production before switching.

$ wp vip-search index-versions activate post next
Are you sure you want to activate index version next for type post? [y/n] y
Success: Successfully activated index version next for type post

5) Delete the old index

Once you’ve verified the new index is handling requests correctly, you can delete the old index. (You cannot delete the active index).

$ wp vip-search index-versions delete post previous
⚠️ You are about to run a destructive operation. Are you sure? [y/n] y
Success: Successfully deleted index version 1 for type post

Last updated: September 02, 2021