Create a new class for the index, that inherit from IIndex interface.
public class NewIndex : IIndex { public string GetName() { throw new NotImplementedException(); } public bool IndexExists() { throw new NotImplementedException(); } public bool IsEnabled() { throw new NotImplementedException(); } public bool CreateIndex() { throw new NotImplementedException(); } public bool DeleteIndex() { throw new NotImplementedException(); } public bool ReIndex(RunningStatus status) { throw new NotImplementedException(); } public bool Add(List<KeyValuePair<string, object>> fields) { throw new NotImplementedException(); } public bool Update(string byQuery, string byField, List<KeyValuePair<string, object>> fields) { throw new NotImplementedException(); } public bool Delete(string byQuery, string byField) { throw new NotImplementedException(); } public IEnumerable<ISearchResult> Search(string query) { throw new NotImplementedException(); } public int Count() { throw new NotImplementedException(); } public int Count(string query) { throw new NotImplementedException(); } public ISearchResult Get(int number) { throw new NotImplementedException(); } public ISearchResult? Get(int number, string query) { throw new NotImplementedException(); } } // add to services in startup.cs file services.AddSingleton<IIndex, NewIndex>();
⚠️ Do not use names multiple times.
Use helping BaseIndex class to use features like "IndexExists" method.
public class UserIndex : BaseIndex<DefaultSearchResult> { public UserIndex(IOptions<NLessSettings> nLessSettings, IWebHostEnvironment webHostEnvironment) : base(nLessSettings, webHostEnvironment) { } public override string GetName() { return "Users"; } }
To register the index, add the new index to the "Indexing" section in appsettings.json file.
To update the index by runtime, without reindex everything. Pipelines are a good way to update index documents.
"Indexing": { "Enabled": true, "Indexes": [ { "Name": "Preview", "Path": "index/preview", "IsEnabled": true }, { "Name": "Public", "Path": "index/public", "IsEnabled": true }, {...add here...} ] },
Use the IndexerService to get an index.
_indexerService.GetIndex("NewIndex");