Configuração de filtros personalizados para Elasticsearch

Use filtros personalizados como uma configuração avançada em seus agentes para habilitar técnicas de pesquisa mais avançadas. Configure filtros personalizados para usá-los como filtros globais que se aplicam a todas as consultas de usuários.

O trecho de código a seguir mostra um exemplo de um filtro personalizado:

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

Se você também configurar um corpo de consulta personalizado como uma configuração avançada do site Elasticsearch, inclua a variável $FILTER no corpo da consulta para aplicar os filtros personalizados.

O trecho de código a seguir mostra um exemplo de um corpo de consulta com a variável $FILTER :

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

Exemplos de objeto de filtro

Explore os casos de uso da filtragem de resultados de pesquisa com filtros personalizados. Os exemplos a seguir pressupõem que os campos title, text e id estejam disponíveis no índice Elasticsearch. Entre eles, title e text são campos do tipo texto, enquanto id é um campo do tipo palavra-chave.

AND

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

Esse objeto de filtro filtra os resultados da pesquisa usando as seguintes condições:

  • title contém "A_keyword_in_title", AND

  • text contém "A_keyword_in_text", AND

  • id é igual a "A_specific_ID".

OU

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

Esse objeto de filtro filtra os resultados da pesquisa usando as seguintes condições:

  • title contém "A_keyword_in_title", OU

  • text contém "A_keyword_in_text", OU

  • id é igual a "A_specific_ID".

NÃO

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

Esse objeto de filtro filtra os resultados da pesquisa usando as seguintes condições:

  • title não contém "A_keyword_in_title", AND

  • text não contém "A_keyword_in_text", AND

  • id não é igual a "A_specific_ID".

(A AND B) OR C

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

Esse objeto de filtro filtra os resultados da pesquisa usando as seguintes condições:

  • title contém "A_keyword_in_title" AND text contém "A_keyword_in_text", OR

  • id não é igual a "A_specific_ID"

Para obter mais informações sobre a bool consulta, consulte a seção “Consulta booleana” na documentação do Elasticsearch.