elasticitems
v2.1.0
Published
Faceted search client on top of OpenSearch
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 elasticitemsconst 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_descwith 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
andandor(default). It works withqueryparametersort used for sorting. one of
sortingskeyfilters 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
_countor_termorder responsible for an order. It can be
ascordescfilters 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
keywordtype because this type is not tokenized.keywordtype is great for faceted fields
Tests
npm test