| Relational DB | Elasticsearch |
|---|---|
| Database | Index |
| Table | Type |
| Row | Document |
| Column | Field |
Limitation: lock contention
Limitation:
1. Needs synchronization between nodes.
2. Difficult to support cross project search for asymmetric cluster
{
"network.host": "192.168.0.1",
"http.port": "9200"
}To control whether the server should instantiate the legacy search engine or the Elastic one
class ElasticCrawTool : public SECrawlTool
{
public:
virtual Int32 Crawl(SEIndexMetadata& irMetadata) override;
virtual Int32 Pause(SEIndexMetadata& irMetadata) override;
virtual Int32 Resume(SEIndexMetadata& irMetadata) override;
virtual Int32 Complete(SEIndexMetadata& irMetadata) override;
virtual Int32 Destroy(SEIndexMetadata& irMetadata) override;
virtual Int32 Enable(SEIndexMetadata& irMetadata) override;
virtual Int32 SaveInitialCrawlProgress(SEIndexMetadata& irMetadata) override;
virtual Int32 SaveIncrementalCrawlProgress(SEIndexMetadata& irMetadata) override;
virtual Int32 StartIncrementalCrawl(SEIndexMetadata& irMetadata) override;
virtual Int32 StopIncrementalCrawl(SEIndexMetadata& irMetadata) override;
virtual Int32 Pend(SEIndexMetadata& irMetadata) override;
};
class ElasticWriter : public SEWriter
{
public:
virtual Int32 Update(UpdateCommand::SmartPtr iDocPtr) override;
virtual Int32 Update(std::vector<UpdateCommand::SmartPtr>& irDocs) override;
virtual Int32 UpdateImmediately(std::vector<UpdateCommand::SmartPtr>& irDocs, MBase::String& irProjectID) override;
};
class ElasticSearcher : public SESearcher
{
public:
virtual SearchResult::SmartPtr Search(SearchParameter::SmartPtr iParamPtr, UserInfo& irUser) override;
virtual MBase::String SearchJson(SearchParameter::SmartPtr iParamPtr, UserInfo& irUser) override;
virtual MBase::String SearchWithContext(ContextParameters::SmartPtr iParamPtr) override;
virtual Int32 NumDoc(MBase::String& irProjectID) override;
virtual MBase::String GetModifyTime(MBase::String& irProjectID, MBase::String& irObjectID) override;
};