Skip to content

manticoresoftware/manticoresearch-javascript

Repository files navigation

Manticore Javascript client

Сlient for Manticore Search.

❗ WARNING: this is a development version of the client. The latest release's readme is https://github.com/manticoresoftware/manticoresearch-javascript/tree/4.0.0

Requirements

Minimum Manticore Search version is 2.5.1 with HTTP protocol enabled.

Manticore Search manticoresearch-javascript Node
dev manticoresearch-dev >= 10.0
>= 6.2.0 >= 3.3.1 >= 10.0
>= 4.2.1 >= 3.0.x >= 10.0
>= 4.0.2 >= 2.0.3 >= 10.0
>= 2.5.1 >= 2.0.2 >= 8.0

Installation

To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing package.json (and this README). Let's call this JAVASCRIPT_CLIENT_DIR. Then run:

npm install

Next, link it globally in npm with the following, also from JAVASCRIPT_CLIENT_DIR:

npm link

To use the link you just defined in your project, switch to the directory you want to use your manticoresearch from, and run:

npm link /path/to/<JAVASCRIPT_CLIENT_DIR>

Finally, you need to build the module:

npm run build

For browser

The library also works in the browser environment via npm and browserify. After following the above steps with Node.js and installing browserify with npm install -g browserify, perform the following (assuming main.js is your entry file):

browserify main.js > bundle.js

Then include bundle.js in the HTML pages.

Webpack Configuration

Using Webpack you may encounter the following error: "Module not found: Error: Cannot resolve module", most certainly you should disable AMD loader. Add/merge the following section to your webpack config:

module: {
  rules: [
    {
      parser: {
        amd: false
      }
    }
  ]
}

Getting Started

Please follow the installation instruction and execute the following JS code:

var Manticoresearch = require('manticoresearch');


# Create instances of API classes
var client= new Manticoresearch.ApiClient();
client.basePath="http://127.0.0.1:9308";
indexApi = new Manticoresearch.IndexApi(client);
searchApi = new Manticoresearch.SearchApi(client);

# Perform insert and search operations
await indexApi.insert({"index": "products", "doc" : {"title" : "Crossbody Bag with Tassel", "price" : 19.85}});
await indexApi.insert({"index": "products", "doc" : {"title" : "microfiber sheet set", "price" : 19.99}});

var search_query = new Manticoresearch.SearchQuery()
search_query.query_string = "@title bag"
      
var search_request = new Manticoresearch.SearchRequest()
search_request.index = "products"
search_request.query = search_query
var query_highlight = new Manticoresearch.Highlight()
query_highlight.fields = {"title":{}}
search_request.highlight = query_highlight
  
var search_response = await searchApi.search(search_request)
console.log("The response of SearchApi->search:\n")    
console.log(search_response)

# Alternatively, you can pass all request arguments as JSON strings
search_response = await searchApi.search({"index": "products", "query": {"query_string": "@title bag"}, "highlight": {"fields": ["title"]}});
console.log("The response of SearchApi->search:\n")    
console.log(search_response)

Documentation for API Endpoints

All URIs are relative to http://127.0.0.1:9308

Class Method HTTP request Description
Manticoresearch.IndexApi bulk POST /bulk Bulk index operations
Manticoresearch.IndexApi callDelete POST /delete Delete a document in an index
Manticoresearch.IndexApi insert POST /insert Create a new document in an index
Manticoresearch.IndexApi partialReplace POST /{index}/_update/{id} Partially replaces a document in an index
Manticoresearch.IndexApi replace POST /replace Replace new document in an index
Manticoresearch.IndexApi update POST /update Update a document in an index
Manticoresearch.SearchApi percolate POST /pq/{index}/search Perform reverse search on a percolate index
Manticoresearch.SearchApi search POST /search Performs a search on an index
Manticoresearch.UtilsApi sql POST /sql Perform SQL requests

Documentation for Models

Documentation for Authorization

Endpoints do not require authorization.