1.0.3 • Published 8 years ago

express-search v1.0.3

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
8 years ago

Stories in Ready Build Status Code Climate Test Coverage

install: npm install express-search

#express-search

A beautifully bootstrapped elasticsearch search middleware for express v4.x.

Allows you to do searches like Pictures of "Cute Puppies" Or Recipies by @MarthaStewart

For example, if you want searches that MUST contain the phrase "Puppies" and you'd prefer them to be wearing hats: "Puppies" wearing hats would return results containing documents that contain "puppies", and try to find documents where the puppies are wearing hats.

If you want to find a person/place you can use mention style tags: @hansolo will return documents where hansolo is mentioned

If you want to search only documents with certain tags you can use hash tags in your search: #music top 10 will return documents with the tag "music, and look for a "top 10" document

You can string them together to make concise yet powerful searches: #music by @paulsimmon "You Can Call Me Al" Will try to find documents tagged "music", where "paulsimmon" is mentioned, and the phrase "You Can Call Me Al" is found.

##Setting Up an End Point

Set up is super simple. You just have to:

  • Provide connection settings for ElasticSearch.
  • Set Index and Type to search.
  • Configure pagination(default page size).
  • Configure Fields to search
    • Fields for general search
    • Fields for tag serach
    • Fields for mentions
  • Fields to return
  • Configure default sorting(optional)
    • Field to sort by
    • Sort order(ascending/descending)

Setup connection settings:

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

var app=express();

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

expressSearch.connect(configs);

Now you can use the expressSearch object to create multiple routes:

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

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

Now to use it:

curl http://localhost/api/search?q=music

You can use the expressSearch object to setup as many search endpoints are you desire.

##Using the end point Express-Search generates a GET end point at whichever route you configure.

There are several parameters you can pass via query string:

  • q (String)
    • the text to search(including mentions/tags/phrases)
  • page(Number)
    • page number starting from 0
  • pageSize(Number)
    • Overwrite default page size
  • sort(String)
    • Either "asc" or "desc"
    • Overwrites default
  • sortBy(String)
    • Set field to sort by
    • Overwrites default

##Batteries Not Included! Express-Search will not index documents for you! You should either index them yourself or use a river plugin. This plugin will not handle configuring a mapping for your documents. This plugin simply handles search.

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

0.0.81

9 years ago

0.0.8

9 years ago

0.0.71

9 years ago

0.0.7

9 years ago

0.0.62

9 years ago

0.0.61

9 years ago

0.0.51

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago