2012-02-01 14 views
5

¿Cómo realizo una búsqueda filtrada en ElasticSearch en un campo de subobjeto? Por ejemplo, mi documento tiene un id, y un campo data que es una matriz JSON de cómo los datos se almacenan en mi base de datos:Búsqueda filtrada de Elasticsearch para campos de subobjeto

{_id: 000, merchant: "merchant_1", email: "[email protected]"}

Mi criterios de búsqueda:

"query": { 
    "filtered": { 
     "filter": { "term": { "data.merchant": "merchant_1"} }, 
     "query": { 
      "query_string": {"query": "hello"} } 
     } 
    } 
} 

doesn' t devuelve cualquier cosa, pero al hacer una consulta solo con query_string hello devuelve las filas correctas. Cambiar "data.merchant" =>"merchant" tampoco cambia nada.

¿Estoy haciendo algo mal aquí?

Actualización: Terminé simplemente usando una consulta booleana, que funcionó.

Respuesta

0
"query": { 
    "filtered": { 
     "filter": { "term": { "data.merchant": "merchant_1"} }, 
     "query": { 
      "query_string": { 
       "default_field": "_all", 
       "query": "hello" 
      } 
     } 
    } 
} 

Esto debería funcionar para su caso.

Cuestiones relacionadas