2012-08-08 21 views
18

Me postulo una simple consulta de este modo:_source No más si script_fields se utiliza en elasticsearch consulta

{ 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "test": { 
     "script": "_source.name" 
    } 
    } 
} 

El problema es que una vez que presento la script_fields, ya no recibo _source en mis resultados.

que he intentado:

{ 
    "fields": [ 
    "_all" 
    ], 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "email": { 
     "script": "_source.name" 
    } 
    } 
} 

y

{ 
    "fields": [ 
    "*" 
    ], 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "email": { 
     "script": "_source.name" 
    } 
    } 
} 

Pero ellos no hacen ninguna diferencia. ¿Hay alguna manera de obtener _source devuelto además del script_fields?

Respuesta

20

En la matriz fields, que se cargue _source:

{ 
    "fields": [ 
    "_source" 
    ], 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "email": { 
     "script": "_source.name" 
    } 
    } 
} 
+0

¿Alguien sabe exactamente _por qué_ esto sucede? ¿Está relacionado con https://github.com/elastic/elasticsearch/issues/20068? –

0

Esto funciona para mí:

curl -X DELETE localhost:9200/a 

curl -X POST localhost:9200/a/b/c -d '{"title" : "foo"}' 

curl -X POST localhost:9200/a/_refresh 

echo; 

curl localhost:9200/a/_search?pretty -d '{ 
    "fields": [ 
    "_source" 
    ], 
    "query": { 
    "match_all": {} 
    }, 
    "script_fields": { 
    "title_script": { 
     "script": "_source.title" 
    } 
    } 
}' 

Salida:

"hits" : { 
    # ... 
    "hits" : [ { 
    # ... 
    "_source" : {"title" : "foo"}, 
    "fields" : { 
     "title_script" : "foo" 
    } 
    } ] 
} 
Cuestiones relacionadas