Skip to main content

Jupiter.Market.Elastic.Comparables.Services.ElasticIndexService

Handles indexing, cleanup, and synchronization of deal data with the !:Elastic.ComparablesIndex in Elasticsearch.

This service manages the lifecycle of the Comparables Index, reading from Table.Deal, Table.Listing, Table.Sale, and Table.Lease to populate and maintain the index.

See the detailed conceptual article: ElasticIndexService Logic.

Methods

#ctor

Initializes a new instance of the #ctor class.

Parameters:

  • esOptions: Elasticsearch settings.
  • indexerOptions: Indexer settings.
  • dataService: The data service for deal retrieval.
  • serviceBusMessageService: The service bus message service for deal messaging.
  • logger: The logger instance.
  • serviceBusSettingsOptions: Service Bus settings.

Jupiter.Market.Elastic.Comparables.Services.ElasticIndexService.InitAsync

No summary available.

Jupiter.Market.Elastic.Comparables.Services.ElasticIndexService.GetClientAsync

No summary available.

Returns: The instance.

GetMissingEntries

No summary available.

Parameters:

  • sendToServiceBus: Whether to send missing entries to Service Bus.

CleanElasticIndexAsync

No summary available.

Parameters:

  • comparableType: Optional comparable type filter.

Jupiter.Market.Elastic.Comparables.Services.ElasticIndexService.DeleteIndex

No summary available.

Jupiter.Market.Elastic.Comparables.Services.ElasticIndexService.CreateIndex

No summary available.

UpsertIndex

No summary available.

This method computes a deterministic SHA-256 hash (DocHash) for each UpsertIndex using a canonical JSON representation (camelCase, stable enum serialization, ignoring nulls and property order). It then fetches all existing documents' hashes from Elasticsearch in a single ids query, compares the hashes, and only bulk indexes documents whose hash is missing or different. This avoids unnecessary re-indexing and eliminates per-document GETs and deep JSON comparisons, optimizing for production-scale indexing.

Steps: Compute DocHash for each input UpsertIndex.Fetch existing DocHash values for all IDs in a single Elasticsearch query.Compare hashes and filter to only changed or new documents.Bulk index only the changed/new documents.

Parameters:

  • comps: The list of deals to upsert. Each deal will have its DocHash property set before indexing.

Returns: The bulk response from Elasticsearch, or null if no documents required re-indexing.

DeleteFromIndex

No summary available.

Parameters:

  • dealId: The deal ID to delete.
Build StatusBuild #20260208.1 | Commit: 94fdcf9 | Branch: HEAD | Built: 2/8/2026, 2:00:49 AM