Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

filterPath

Eu estava estudando a integração Angular 4 -- Elasticsearch e encontrei uma sintaxe que não entendi. Alguém poderia me explicar?

fullTextSearch(_index, _type, _field, _queryText): any {
    return this.client.search({
      index: _index,
      type: _type,
      filterPath: ['hits.hits._source', 'hits.total', '_scroll_id'],
      body: {
        'query': {
          'match_phrase_prefix': {
            [_field]: _queryText,
          }
        }
      },
      '_source': ['fullname', 'address']
    });
  }

Eu entendi que ele faz um query. Mas não entendo a função do filterPath e do '_search'

2 respostas
solução!

Olá Felipe,

Imagino que tenha copiado o código acima do site http://javasampleapproach.com/frontend/angular/angular-4-elasticsearch-example-simple-full-text-search.

Em geral, em situações assim, a sugestão é você, ou olhar as instruções na página do exemplo, ou olhar a documentação do client javascript do Elasticsearch para entender o que cada parâmetro significa.

Eu segui a primeira sugestão e vi que o exemplo de Angular 4 com ES é bem superficial pois não te explica muito bem o que significa cada coisa. Tentei então a segunda sugestão e achei o seguinte:

https://github.com/elastic/elasticsearch-js/blob/13.x/src/lib/apis/6_0.js#L5702

Creio que por "_search" você quis dizer "_source" . A explicação para _source é:

" * @param {<>, <>, <>} params._source - True or false to return the _source field or not, or a list of fields to return"

No exemplo que você colocou, significa que os valores fullname e address devem ser retornados.

Sobre sua primeira pergunta, eu fiz uma busca no repositorio git e achei o seguinte:

https://github.com/elastic/elasticsearch-js/blob/6c4882681fe91c0c90901aa47f68b02dc9ed58f8/docs/api_conventions.asciidoc

"String|String[] — Starting in elasticsearch 1.6 the filterPath parameter can be passed to any API to filter its reponse values. See the elasticsearch response filtering docs for more information."

Segui o link acima e achei:

"https://www.elastic.co/guide/en/elasticsearch/reference/5.0/common-options.html#common-options-response-filtering"

"All REST APIs accept a filter_path parameter that can be used to reduce the response returned by elasticsearch."

Ou seja, ele te permite reduzir a resposta retornada pelo ES.

Em resumo, ambos os atributos são usados para trazer apenas o mínimo necessário para sua app web. Uma outra sugestão para o caso onde não haja documentação é de remover estes atributos e comparar a diferença..

Obrigado pela ajuda