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.

QueryAndSendToServiceBusAsync

No summary available.

This method:Parses the QueryJson from ElasticsearchSettings configurationExecutes a scroll query against the Elasticsearch indexStreams document IDs in batches to Service Bus via ServiceBusMessageServiceLogs progress periodically

The query can potentially match millions of documents and uses Elasticsearch scroll API for efficient streaming without loading all results into memory.

Parameters:

  • cancellationToken: Cancellation token for the operation.
Build StatusBuild #20260430.1 | Commit: d7a0884 | Branch: HEAD | Built: 4/30/2026, 2:01:48 AM