Configurazione di filtri personalizzati per Elasticsearch

Utilizzate i filtri personalizzati come impostazione avanzata nei vostri agenti per abilitare tecniche di ricerca più avanzate. Configurare i filtri personalizzati per utilizzarli come filtri globali da applicare a tutte le query degli utenti.

Il seguente frammento di codice mostra un esempio di filtro personalizzato:

[
    {
        "bool": {
            "must": [
                {
                "term": {
                    "title": "A title"
                    }
                }
            ],
        }
    }
]

Se si configura anche un corpo di query personalizzato come impostazione avanzata di Elasticsearch, includere la variabile $FILTER nel corpo della query per applicare i filtri personalizzati.

Il seguente frammento di codice mostra un esempio di corpo della query con la variabile $FILTER :

{
  "query": {
    "bool": {
      "should": [
        {
          "text_expansion": {
            "ml.tokens": {
              "model_id": ".elser_model_2_linux-x86_64",
              "model_text": "$QUERY"
            }
          }
        }
      ],
      "filter": "$FILTER"
    }
  }
}

Esempi di oggetti filtro

Esplorate i casi d'uso per filtrare i risultati della ricerca con filtri personalizzati. Gli esempi seguenti presuppongono che i campi title, text e id siano disponibili nell'indice Elasticsearch. Tra questi, title e text sono campi di tipo testo, mentre id è un campo di tipo parola chiave.

AND

[
    {
        "match": {
            "title": "A_keyword_in_title"
        }
    },
    {
        "match": {
            "text": "A_keyword_in_text"
        }
    },
    {
        "match": {
            "id": "A_specific_ID"
        }
    }
]

Questo oggetto filtro filtra i risultati della ricerca in base alle seguenti condizioni:

  • title contiene "A_keyword_in_title", E

  • text contiene "A_parola_chiave_nel_testo", E

  • id è uguale a "A_specific_ID".

OR

[
  {
    "bool": {
        "should": [
            {
                "match": {
                    "title": "A_keyword_in_title"
                }
            },
            {
                "match": {
                    "text": "A_keyword_in_text"
                }
            },
            {
                "match": {
                     "id": "A_specific_ID"
                }
            }
        ]
    }
  }
]

Questo oggetto filtro filtra i risultati della ricerca in base alle seguenti condizioni:

  • title contiene "A_keyword_in_title", OPPURE

  • text contiene "A_parola_chiave_nel_testo", OPPURE

  • id è uguale a "A_specific_ID".

NON

[
  {
    "bool": {
        "must_not": [
            {
                "match": {
                    "title": "A_keyword_in_title"
                }
            },
            {
                "match": {
                    "text": "A_keyword_in_text"
                }
            },
            {
                "match": {
                     "id": "A_specific_ID"
                }
            }
        ]
    }
  }
]

Questo oggetto filtro filtra i risultati della ricerca in base alle seguenti condizioni:

  • title non contiene "A_keyword_in_title", E

  • text non contiene "A_keyword_in_text", E

  • id non è uguale a "A_specific_ID".

(a E b) OPPURE c

[
  {
    "bool": {
        "should": [
            {
                "match": {
                    "id": "A_specific_ID"
                }
            }
            {
                "bool": {
                    "filter": [
                        {
                            "match": {
                                "title": "A_keyword_in_title"
                            }
                        },
                        {
                            "match": {
                                "text": "A_keyword_in_text"
                            }
                        }
                    ]
                }
            }
        ]
    }
  }
]

Questo oggetto filtro filtra i risultati della ricerca in base alle seguenti condizioni:

  • title contiene "A_keyword_in_title" AND text contiene "A_keyword_in_text", OR

  • id non è uguale a "A_specific_ID"

Per ulteriori informazioni sulla query bool , consultare la sezione "Query booleana" nella documentazione di Elasticsearch.