Lo que estoy tratando de hacer es obtener solo la fuente de la consulta de búsqueda elástica para omitir el procesamiento en javascript, por lo que podría obtener más ganancias de rendimiento. ¿Es posible hacerlo?
Entonces, esto es lo que hago actualmente, solo obtengo los datos de la búsqueda elástica e itero cada uno de esos objetos para construir una matriz que solo contiene lo que hay dentro de _source:
const { body } = await this.elsticSearchService.search<any>({ index: this.configService.get('ELASTICSEARCH_INDEX'), body: { query: { match_all: {}, }, size: 10000, }, }); const hits = body.hits.hits; return hits.map((item: any) => item._source);Entonces, mi pregunta es, ¿hay alguna manera de obtener solo _source de la búsqueda elástica para omitir el procesamiento en JavaScript? Entonces, el objeto devuelto de la búsqueda elástica se vería así
[ 0:{ "key": "value"}, // key,value from _source object 1:{ "key": "value"}, // key,value from _source object 2:{ "key": "value"}, // key,value from _source object ]así que sin todos los otros campos como aciertos, tomó, etc...
No es posible cambiar la estructura de la respuesta que obtiene de la llamada de búsqueda.
Sin embargo, lo que puede hacer es especificar filter_path para que solo obtenga el contenido de _source en la respuesta y no necesite procesarlo ya que sabe que solo tiene contenido de _source
const { body } = await this.elsticSearchService.search<any>({ index: this.configService.get('ELASTICSEARCH_INDEX'), filter_path: '**._source', <--- add this line body: { query: { match_all: {}, }, size: 10000, }, });