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:
titlecontém "A_keyword_in_title", ANDtextcontém "A_keyword_in_text", ANDidé 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:
titlecontém "A_keyword_in_title", OUtextcontém "A_keyword_in_text", OUidé 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:
titlenão contém "A_keyword_in_title", ANDtextnão contém "A_keyword_in_text", ANDidnã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:
titlecontém "A_keyword_in_title" ANDtextcontém "A_keyword_in_text", ORidnã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.