Boolean, ou uma consulta Bool em Elasticsearch, é um tipo de pesquisa que permite combinar condições usando condições booleanas.
Elasticsearch pesquisará o documento no índice especificado e retornará todos os registros que correspondem à combinação de cláusulas booleanas.
Usando consultas booleanas, você pode filtrar para parâmetros mais específicos, permitindo que você obtenha resultados mais precisos.
Neste artigo, veremos como usar quatro cláusulas booleanas disponíveis no Elasticsearch: deve, deve_not, deve e filtrar.
Sintaxe geral
A sintaxe geral de uma consulta booleana usada no Elasticsearch é:
Obtenha _search
"consulta":
"bool":
"deve": [
],
"Não deve": [
],
"deve": [
],
"Filtro": [
]
Você não precisa combinar todas as ocorrências booleanas em uma única consulta. Você pode usar cada um como uma unidade independente.
Booleano deve
Digamos que você tenha um índice contendo blogs. Podemos buscar os documentos onde o sistema operacional é uma máquina Windows. Abaixo está um exemplo de consulta:
Get /kibana_sample_data_logs /_search
"consulta":
"bool":
"deve": [
"termo":
"máquina.os ":
"Valor": "Win"
]
Conforme mostrado na resposta de exemplo, o resultado acima deve retornar os valores em que o sistema operacional é o Windows.
Booleano deve_not
Da mesma forma, podemos usar a ocorrência Must_Not para remover o termo em que o sistema operacional é o Windows.
Veja a consulta de exemplo abaixo:
Get /kibana_sample_data_logs /_search
"consulta":
"bool":
"Não deve": [
"termo":
"máquina.os ":
"Valor": "Win"
]
Esta consulta filtra todos os registros onde a máquina.OS é uma máquina Windows. Abaixo está um exemplo de resultado:
Filtro booleano
O filtro booleano removerá todos os documentos que não correspondem à condição especificada.
Por exemplo, podemos filtrar os logs onde o número de bytes é maior que 1000.
Podemos executar uma consulta como mostrado abaixo:
Get /kibana_sample_data_logs /_search
"consulta":
"bool":
"Filtro": [
"faixa":
"Bytes":
"GTE": 10000
]
A resposta deve incluir apenas os documentos em que o número de bytes é maior que o valor definido.
Exemplo de resposta:
Você também pode combinar um filtro com outras ocorrências booleanas. Por exemplo, primeiro pesquisamos documentos correspondentes em que o sistema operacional é vencido e depois filtre o número de bytes maiores que 10000.
Get Kibana_sample_data_logs/_search
"consulta":
"bool":
"deve": [
"termo":
"máquina.os ":
"Valor": "Win"
],
"Filtro": [
"faixa":
"Bytes":
"GTE": 10000
]
Nesse caso, primeiro buscamos os documentos em que o sistema operacional contém o termo "vitória". Em seguida, usamos os resultados e o filtro para o número de bytes maiores que 10000.
Os documentos resultantes serão semelhantes aos mostrados abaixo:
Booleano deveria
A ocorrência booleana final que você pode usar é o deve. O deveria é intimamente semelhante ao must, mas é menos rigoroso.
Get Kibana_sample_data_logs/_search
"consulta":
"bool":
"deve": [
"corresponder":
"máquina.os ":" Osx "
]
O exemplo deve retornar os registros que a string "OSX" aparece no campo do sistema operacional.
Conclusão
Neste artigo, você aprendeu a trabalhar com a consulta booleana no Elasticsearch e nos resultados do filtro com base em condições específicas.