Skip to content

mabiloft/sequelastic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sequelastic

⚠️ this only works with sequelize-typescript@2.x.x, in order to use this package with sequelize-typescript@1.x.x run: npm install sequelastic@0.0.7

The first sequelize-typescript and ElasticSearch bridge tool

installation

prerequisites:

in order to install sequelastic on your project just run:

npm install sequelastic

usage

first of all import and instantiate the utility:

import Sequelastic from "sequelastic";
import { model1, model2 } from "./sequelize-typescript-models";

const sequelastic = new Sequelastic({
  node: "https://elastiSearchSevice.example:9200",
  models: [model1, model2],
});

then sync your database with the elasticSearch service:

sequelastic
  .sync()
  .then((success) => {
    if (success) {
      console.log("Database synced correctly");
    } else {
      console.log("Something went wrong");
    }
  })
  .catch((err) => {
    console.error(err);
  });

now you are ready to search whatever you want with sequelastic:

sequelastic
  .search("foo", "bar", { fuzzy: true, fuzziness: "AUTO" })
  .then((results) => {
    console.log(results);
  })
  .catch((err) => {
    console.error(err);
  });

Sequelastic Functions

Constructor

create new Sequelastic instance

new Sequelastic(config: SequelasticContructorProps) => Sequelastic
property type description default
config SequelasticConstructorProps config object none

Sync

Sync SQL database

this function will sync your database with the elasticSearch service using the following method:

  • Deleting all the pre-existing indices
  • Recreating all the indices using as index name the plural of the model name
  • using bulk insertion to add all the corresponding records
sequelastic.sync() => Promise<boolean>
property type description default
options SequelasticSyncOptions config object none

Search

Search in indices something

this function will search in elasticSearch using the search type query_string

sequelastic.search(query: string, index: string, options:SequelasticSearchOptions) => Promise<[{[key: string]: any}]> // options.wholeResponse = false

sequelastic.search(query: string, index:string, options: SequelizeSearchOptions) => Promise<elasticSearch.ApiResponse<Record<string, any>, Record<string, unknown>>> // options.wholeResponse = true
property type description default
query string the elasticSearch query string none
index string the index where search for something "*"
options SequelasticSearchOptions search options undefined

customSearch

use a custom body for the elasticSearch _search

sequelastic.customSearch(params: elasticSearch.RequestParams.Search) => Promise<
    elasticSearch.ApiResponse<Record<string, any>, Record<string, unknown>>
  >
property type description default
params elasicSearch.RequestParams.Search the custom search parameter none

searchInIndices

Make a search on different indices with a single request

this function makes a multiple search on elasticSearch adding using the same query, you can choose, for each index, the fuzziness and the pagination

sequelastic.searchInIndices(query: string, options: SequelasticMultipleSearchOptions) => Promise<
    elasticSearch.ApiResponse<Record<string, any>, Record<string, unknown>>
  >
property type description default
query string the search query, you can also use operators none
options SequelasticMultipleSearchOptions the search options undefined

allIndices

Get all indices in the cluster

sequelastic.allIndices() => Promise<string[]>



Sequelastic Types

SequelasticContructorProps

key type description default
node string elasticsearch service endpoint http://localhost:9200
models (Model | SequelasticModelType)[] list of all the models to index []
exclude (optional) string[] list of the model's fields to globally exclude from index undefined

SequelasticModelType

key type description
model Model sequelize model to be indexed
attributes (optional) string[] | {exclude: string[]} fields to include or exclude in index
include (optional) (string | SequelasticModelType)[] object to eventually specify models to include in index

SequelasticSyncOptions

key type description default
refresh boolean use refresh in elasticSearch bulk method false

SequelasticSearchOptions

key type description default
fuzzy (optional) boolean use fuzzy search false
fuzziness (optional) "AUTO" | number search fuzziness "AUTO"
wholeResponse (optional) boolean get as return the whole search response or only the hits false
from (optional) number offset from the first result 0
size (optional) number maximum amount of hits to be returned 10

SequelasticMultipleSearchOptions

key type description default
indices (optional) (string | SequelasticMultipleSearchIndex )[] the indices where search for the query all the indices
fuzzy (optional) boolean use fuzzy search false
fuzziness (optional) "AUTO" | number search fuzziness "AUTO"
from (optional) number offset from the first result 0
size (optional) number maximum amount of hits to be returned 10

SequelasticMultipleSearchIndex

key type description default
index string index where search for the query none
fuzzy (optional) boolean use fuzzy search false
fuzziness (optional) "AUTO" | number search fuzziness "AUTO"
from (optional) number offset from the first result 0
size (optional) number maximum amount of hits to be returned 10

About

Sequelize-typescript and ElasticSearch bridge for node and TypeScript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published