Configurando um ponto final ElasticSearch em seu projeto expresso

Configurar o ElasticSearch em seu aplicativo pode ser uma dor real. Você precisa reunir algum construtor de consulta, obter os resultados, enviar todos os documentos de origem para um array, descobrir quais campos precisam ser filtrados e quais precisam ser consultados. No final, você tem um barco feito de fita adesiva que mal consegue flutuar.

Com Express-Search você pode simplesmente adicionar água (não realmente … sério não …). Com Express-Search você fornece ElasticSearch e algumas configurações básicas e você navegará sem problemas. Com recursos como pesquisa de texto completo, correspondência de frase para texto citado, pesquisa de tag por meio de hashtags e pesquisa de menção por meio da tag de menção (@). Ele permite que você forneça uma pesquisa de entrada única e concisa com recursos avançados.

Configuração

A configuração é super simples. Você só tem de:

  • Fornece configurações de conexão para ElasticSearch.
  • Defina Índice e Tipo para pesquisar.
  • Configure a paginação (tamanho de página padrão).
  • Configure os campos para pesquisar
    • Campos para pesquisa geral
    • Campos para busca de tags
    • Campos para menções
  • Campos a devolver
  • Configure a classificação padrão (opcional)
    • Campo para classificar por
    • Ordem de classificação (crescente / decrescente)

Configure as configurações de conexão:

var expressSearch=require('express-search');
var express=require('express');

var app=express();

var config={
'hosts':['localhost:9200']
//'log':'trace' //handy for debugging
}

var search=expressSearch(configs);

Agora você pode usar o objeto expressSearch para criar várias rotas:

var mySearch={
index
: "myIndex",
type
: "someType",
//fields for tag search
tags
: ['tags','twitter.tags'],
mentions
: ['authors','editors'], //fields for mention search
fields
: ['title','description'], //fields for general search
//fields to return in results
projection
: ['title','description','authors','editors','tags'],
pageSize
: 10, //default page size
sort
: 'desc',
sortBy
: 'createDate'
};

app
.use('/api/search/',search.setup(mySearch));

Agora, para usá-lo:

curl http://localhost/api/search?q=music&page=10&sortBy=published_date&sort=desc

Você pode usar o objeto expressSearch para configurar quantos endpoints de pesquisa desejar.