elasticitems
v2.0.15
Published
Faceted search client on top of Elasticsearch 7.x
Downloads
6
Readme
ElasticItems
Elasticsearch 7.x client for JS with faceted search, custom features and simple interface
Features
- faceted search
- full text
- pagination
- sorting
Getting Started
npm install elasticitems
const elasticitems = require('elasticitems')(es_config, search_config);
elasticitems.search()
.then(result => {
console.log(result);
})
API
var elasticitems = ElasticItems(es_config, [search_config])
es_config
The first es_config
is elasticsearch configuration object and contains values like host
, index
or type
.
search_config
Responsible for defining global configuration.
aggregations filters configuration i.e. for
tags
,actors
,colors
, etc. Responsible for generating facets.sortings you can configure different sortings like
tags_asc
,tags_desc
with options and later use it with one key.
elasticitems.search(options, [search_config])
options
per_page amount of items per page.
page page number - used for pagination.
query used for full text search.
operator search operator
and
andor
(default). It works withquery
parametersort used for sorting. one of
sortings
keyfilters filtering items based on specific aggregations i.e. {tags: ['drama' , 'historical']}
query_string i.e. "brand:Audi OR brand:Mercedes"
facets_names make faceted search only for specific fields i.e. ['tags', 'genres']
fields search only in specifc fields i.e. ['name', 'description']. Missing parameter means search in all fields
ids search by ids i.e. ['1', '2', '3']
exclude_ids exclude ids from search i.e. ['1', '2', '3']
elasticitems.similar(id, options)
Show similar items based on collaborative filtering
options
- fields i.e ['tags'].
elasticitems.aggregation(options)
It returns full list of filters for specific aggregation
options
name aggregation name
per_page filters per page
size how much load into memory (for pagination)
page page number
sort responsible for sorting mechanism. It can be
_count
or_term
order responsible for an order. It can be
asc
ordesc
filters filter this aggregation through another aggregations (facets)
aggregation_query used for quering filters. It's not full text search
query search through items
query_string search through items by query string i.e. (category:Garden and color:red)
elasticitems.get(id)
Returns found record otherwise throw an error
elasticitems.getBy(key, value)
Returns record based on key and value
elasticitems.add(data, [options])
Add a new object into index. Provide your own id
if you don't want it auto-generated
elasticitems.partialUpdate(id, data, [options])
Updates object in index
elasticitems.delete(id)
Delete object from index
Notes
- Full text search does not work on
keyword
type because this type is not tokenized.keyword
type is great for faceted fields
Tests
npm test