Sequelastic
:warning: 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
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>
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}]>
sequelastic.search(query: string, index:string, options: SequelizeSearchOptions) => Promise<elasticSearch.ApiResponse<Record<string, any>, Record<string, unknown>>>
customSearch
use a custom body for the elasticSearch _search
sequelastic.customSearch(params: elasticSearch.RequestParams.Search) => Promise<
elasticSearch.ApiResponse<Record<string, any>, Record<string, unknown>>
>
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>>
>
allIndices
Get all indices in the cluster
sequelastic.allIndices() => Promise<string[]>
Sequelastic Types
SequelasticContructorProps
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
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
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 |