IP Library Granted Patent US 12688176
Granted Patent B2
US 12688176 · App. 18/907,009 · Granted Jul 21, 2026

Search and analytics engine with object store persistence

Inventors: Henning Andersen (Silkeborg, DK); Alexandros Batsakis (San Francisco, CA); Adrien Grand (Maisoncelles-Pelvey, FR); David Christopher Turner (Otley, GB); Jason Tedor (Avon, OH); Tanguy Leroux (Guerande, FR); Timothy Regan Brooks (Denver, CO)
Assignee: Elasticsearch B.V.
G06F16/2272G06F12/0253G06F16/215
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12688176
App. No.
18/907,009
Granted
Jul 21, 2026
Kind
B2
Abstract

According to an aspect, a search system includes an indexing tier and a search tier. The indexing tier is configured to generate an index structure from a plurality of documents, store the index structure in a local storage device, and transmit the index structure to an external object store, the external object store configured to store the index structure. The search tier is configured to receive a search query from a client device and communicate with the external object store or the indexing tier to retrieve at least a portion of the index structure to search data based on the search query.

Claims (88)

1 . A search system comprising:

at least one processor; and

at least one memory device storing executable instructions that cause the at least one processor to execute:

an indexing tier configured to:

generate a segment of an index structure based on data received from at least one first computing device;

store the segment in a local storage device associated with the indexing tier; and

transmit the segment to an external object store for storage thereon; and

a search tier configured to:

receive a search query from a second computing device;

retrieve at least a portion of the segment from the external object store; and

execute the search query using at least the portion of the segment.

2 . The search system of claim 1 , wherein the indexing tier is configured to:

in response to the segment being transmitted to the external object store, delete the segment from the local storage device.

3 . The search system of claim 1 , wherein the indexing tier is configured to:

determine whether a size of a plurality of segments stored in the local storage device satisfy a threshold level, the plurality of segments including the segment; and

in response to the size being determined as satisfying the threshold level, transmit a batched payload to the external object store, the batched payload including the plurality of segments.

4 . The search system of claim 1 , wherein the indexing tier is configured to:

determine whether a plurality of segments are stored in the local storage device for a period of time that satisfies a threshold time interval, the plurality of segments including the segment; and

in response to the period of time being determined as satisfying the threshold time interval, transmit a batched payload to the external object store, the batched payload including the plurality of segments.

5 . The search system of claim 1 , wherein the indexing tier is configured to:

in response to receiving the data from the at least one first computing device, generate a transaction record identifying a change to be made to the index structure;

in advance of the segment being generated, transmit the transaction record to the external object store for storage thereon;

in response to a restart event or a failure event, retrieve the transaction record from the external object store; and

generate the segment of the index structure using the transaction record.

6 . The search system of claim 5 , wherein the indexing tier is configured to:

initiate deletion of the transaction record from the external object store in response to a determination that the segment has been stored in the external object store and the segment includes the change identified in the transaction record.

7 . The search system of claim 1 , wherein the executable instructions include instructions that cause the at least one processor to execute:

a controller configured to:

monitor a first volume of the data received by the indexing tier and a second volume of search queries received by the search tier;

in response to the first volume satisfying a first threshold level, adjust a number of indexing nodes of the indexing tier; and

in response to the second volume satisfying a second threshold level, adjust a number of search nodes of the search tier.

8 . The search system of claim 1 , wherein the segment is a first segment, wherein the indexing tier is configured to:

identify a second segment in the external object store that is not referenced by an index manifest representing a searchable state of the index structure; and

initiate deletion of the second segment from the external object store.

9 . The search system of claim 8 , wherein the indexing tier is configured to:

identify a set of active searchers associated with the search tier; and

in response to a determination that the second segment is not accessed by the set of active searchers, initiate deletion of the second segment from the external object store.

10 . The search system of claim 1 , wherein the local storage device associated with the indexing tier is a first local storage device, wherein the search query is a first search query, wherein the search tier is configured to:

in response to the portion of the segment being retrieved from the external object store, store the portion of the segment in a second local storage device associated with the search tier;

receive a second search query;

retrieve the portion of the segment from the second local storage device; and

execute the second search query using at least the portion of the segment.

11 . The search system of claim 1 , wherein the local storage device associated with the indexing tier is a first local storage device, the segment is a first segment, and the search query is a first search query, wherein the search tier is configured to:

identify a pattern of segment access by analyzing a plurality of search queries;

identify a second segment of the index structure based on the pattern of segment access;

retrieve the second segment from the external object store; and

in advance of receiving a second search query that uses the second segment, store the second segment in a second local storage device associated with the search tier.

12 . A non-transitory computer-readable medium storing executable instructions that when executed by at least one processor cause the at least one processor to execute operations, the operations comprising:

generating a segment of an index structure based on data received from at least one first computing device;

storing the segment in a local storage device associated with an indexing tier;

transmitting the segment to an external object store for storage thereon;

receiving a search query from a second computing device;

retrieving at least a portion of the segment from the external object store; and

executing the search query using at least the portion of the segment.

13 . The non-transitory computer-readable medium of claim 12 , wherein the operations further comprise:

determining whether a size of a plurality of segments stored in the local storage device satisfy a threshold level, the plurality of segments including the segment;

determining whether the plurality of segments are stored in the local storage device for a period of time that satisfies a threshold time interval; and

in response to the size being determined as satisfying the threshold level and the period of time being determined as satisfying the threshold time interval, transmitting, a batched payload to the external object store, the batched payload including the plurality of segments.

14 . The non-transitory computer-readable medium of claim 12 , wherein the operations further comprise:

in response to receiving the data from the at least one first computing device, generating a transaction record identifying a change to be made to the index structure;

in advance of generating the segment, transmitting the transaction record to the external object store for storage thereon;

in response to a restart event or a failure event, retrieving the transaction record from the external object store; and

generating the segment of the index structure using the transaction record.

15 . The non-transitory computer-readable medium of claim 14 , wherein the operations further comprise:

initiating deletion of the transaction record from the external object store in response to a determination that the segment has been stored in the external object store and the segment includes the change identified in the transaction record.

16 . The non-transitory computer-readable medium of claim 12 , wherein the operations further comprise:

in response to the segment being transmitted to the external object store, deleting the segment from the local storage device.

17 . A method comprising:

generating a segment of an index structure based on data received from at least one first computing device;

storing the segment in a first local storage device associated with an indexing tier;

transmitting the segment to an external object store for storage thereon;

receiving a search query from a second computing device;

determining whether the segment is stored in a second local storage device associated with a search tier, the second local storage device configured to store one or more segments previously retrieved by the search tier;

in response to the segment being determined as not stored in the second local storage device, retrieving at least a portion of the segment from the external object store; and

executing the search query using at least the portion of the segment.

18 . The method of claim 17 , further comprising:

determining whether a size of a plurality of segments stored in the first local storage device satisfy a threshold level, the plurality of segments including the segment;

determining whether the plurality of segments are stored in the first local storage device for a period of time that satisfies a threshold time interval; and

in response to the size being determined as satisfying the threshold level and the period of time being determined as satisfying the threshold time interval, transmitting a batched payload to the external object store, the batched payload including the plurality of segments.

19 . The method of claim 17 , further comprising:

storing the segment in the second local storage device; and

deleting the segment from the second local storage device in response to an access frequency of the segment satisfying a threshold condition.

20 . The method of claim 17 , further comprising:

identifying a plurality of segments stored in the external object store that satisfy a merge threshold;

retrieving the plurality of segments from the external object store;

merging the plurality of segments into a consolidated segment;

transmitting the consolidated segment to the external object store; and

updating an index manifest to reference the consolidated segment instead of the plurality of segments.