Clear index programatically

 

Hi,

I have a custom indexing scheduled job. The files that needs to be indexed varies based on few dynamic criterias. Hence I want my schedule job to clear all indexed data and start indexing afresh. So is there a way that I can clear the index programatically?

#66193 Feb 22, 2013 13:45
  •  

    Hi!

    You could do something like:

    SearchClient.Instance.Delete<object>(x => x.GetType().Name.Exists() | !x.GetType().Name.Exists());

    The expression passed to the Delete method doesn't make much sense in other contexts, we just use it to supply a filter that wil match anything.

    However, instead of deleting everything and reindexing all your data, I'd recommend doing the following:

    1. Create an extension method for the relevant types, or for object. Name Timestamp and have it return DateTime.Now.
    2. Configure SearchClient's conventions to include the extension method for all relevant types.
    3. When you start your scheduled job create a variable, like var indexingStart = DateTime.Now
    4. Index all objects that should be indexed.
    5. Delete all objects of relevant types whose Timestamp is before indexingStart, ie SearchClient.Instance.Delete<SomeType>(x => x.Timestamp().Before(indexingStart))
    #66200 Feb 22, 2013 18:11
  •  

    Hi Joel, thanks for the information.

    #66291 Feb 26, 2013 14:44
  • Amit Mittal
    Member since: 2016
     

    Hi Joel,

    THanks for this great suggestion. i am extremly new to episerver. can you update the broken link for "Include"

    "Configure SearchClient's conventions to include the extension method for all relevant types."

    #171511 Nov 09, 2016 8:53