He estado trabajando con ElasticSearch en los últimos meses, pero todavía me resulta complicado cuando tengo que pasar una consulta complicada.Cómo usar los parámetros ElasticSearch Query (consulta DSL) para varios tipos?
quiero para ejecutar la consulta que tendrá que buscar en los múltiples "tipos" y cada tipo tiene que ser buscado con sus propios "filtros", pero es necesario haber combinado
Por ejemplo "resultados buscado":
Necesito buscar el documento "user type" que son mis amigos y al mismo tiempo tengo que buscar el documento "tipo de objeto" que me gusta, de acuerdo con la palabra clave proporcionada.
O
La consulta que tiene tanto la "Y" y "NO" cláusula
Ejemplo consulta:
$options['query'] = array(
'query' => array(
'filtered' => array(
'query' => array(
'query_string' => array(
'default_field' => 'name',
'query' => $this->search_term . '*',
),
),
'filter' => array(
'and' => array(
array(
'term' => array(
'access_id' => 2,
),
),
),
'not' => array(
array(
'term' => array(
'follower' => 32,
),
),
array(
'term' => array(
'fan' => 36,
),
),
),
),
),
),
);
como esta consulta está destinado a buscar el usuario con access_id = 2 , pero no debe tener el seguidor de id 32 y fan de id 36
pero esto no funciona ...
Editar: consulta modificada
{
"query": {
"filtered": {
"filter": {
"and": [
{
"not": {
"filter": {
"and": [
{
"query": {
"query_string": {
"default_field": "fan",
"query": "*510*"
}
}
},
{
"query": {
"query_string": {
"default_field": "follower",
"query": "*510*"
}
}
}
]
}
}
},
{
"term": {
"access_id": 2
}
}
]
},
"query": {
"field": {
"name": "xyz*"
}
}
}
}
}
ahora después de ejecutar esta consulta, que estoy recibiendo dos resultados, uno con seguidor: "34518" & ventilador: "510" y el segundo con ventilador: "34", pero no se supone que sea solo el segundo en el resultado.
¿Alguna idea?
¿El filtro "no" siempre viene bajo el filtro "y", o es solo en este caso –
Hola @DrTech, acabo de editar la pregunta, por favor revisa. –
Su pregunta editada presenta otros problemas. Sugiero que eche un vistazo a la presentación a la que me he vinculado: explica la diferencia entre los términos y el texto, y qué tipos de consultas o filtros usar. – DrTech