_signals_ingest
unless you specify a different index pipeline.
The _signals_ingest
index pipeline has five stages:
has_clicks
flag stagehas_clicks
flag stage is an instance of the Update Related Document stage that updates the has_clicks
flag to “true” on an existing request signal after the first click signal is processed for the request.
request_id_s
, which gets set by the Format Signals stage using a distributed cache of recently processed request signals.
If the request_id_s
field is set, then send a real-time GET
query to Solr to find a request signal with ID equal to the value of the request_id_s
field on the click signal. To avoid re-updating request signals, the RTG query also filters on has_clicks==false
, which avoids duplicate atomic updates on the same document in Solr. Real-time GET
is used to avoid timing issues between a request signal being sent to Solr and when it gets committed. This prevents missing updates when clicks occur soon after the initial request signal is sent by the search app.
request_id_s
field set, then do a normal Solr lookup for the request signal using: +query_id:"${query_id}" +type:request +has_clicks:false
. A click signal may not have a request_id_s
if there is a cache miss in the distributed cache used by the Format Signals stage.
query_id
. This is because the query_id
is based on session
+ query
+ filter
, so if a user sends the same query
+ filter
during the same session, there will be multiple request signals with the same query_id
value. Thus, the stage sorts to get the latest request signal to update.
has_clicks
field to true and performs an atomic update in Solr.