Skip to content

enxtur/node-elastic-query-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-elastic-query-builder

Very simple search query builder for private purpose. But feel free to contribute & issues

Install

Install with npm

npm install --save elastic-query-builder

Example

'use strict'
import QueryBuilder from 'elastic-query-builder'

let qb = new QueryBuilder('myindex', 'mytype')
qb.addMustTerm('user_id', 1)
qb.addMustNotTerm('deleted', true)
qb.addShouldTerm('type', 'sample-type')
qb.addMustQueryString(['title', 'desc'], '*hello*')
qb.addTermsAgg('category_count', 'category_id')
qb.setLimit(10)
qb.setOffset(0)
qb.addSort('id', 'desc')
let query = qb.build()

console.log(JSON.stringify(query, false, 4))

Output

{
    "index": "myindex",
    "type": "mytype",
    "body": {
        "sort": [
            {
                "id": {
                    "order": "desc"
                }
            }
        ],
        "size": 10,
        "from": 0,
        "query": {
            "filtered": {
                "filter": {
                    "bool": {
                        "must": [
                            {
                                "term": {
                                    "user_id": 1
                                }
                            },
                            {
                                "query_string": {
                                    "fields": [
                                        "title",
                                        "desc"
                                    ],
                                    "query": "*hello*"
                                }
                            }
                        ],
                        "must_not": [
                            {
                                "term": {
                                    "deleted": true
                                }
                            }
                        ],
                        "should": [
                            {
                                "term": {
                                    "type": "sample-type"
                                }
                            }
                        ]
                    }
                }
            }
        },
        "aggs": {
            "category_count": {
                "terms": {
                    "field": "category_id"
                }
            }
        }
    }
}

Tests

$ npm test

About

Very simple search query builder for private purpose

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published