openapi: 3.1.0 info: title: Manticore Search Client Index API description: 'Сlient for Manticore Search. ' version: 5.0.0 contact: name: Manticore Software Ltd. email: info@manticoresearch.com url: https://manticoresearch.com/contact-us/ license: name: MIT url: http://opensource.org/licenses/MIT servers: - description: Default Manticore Search HTTP url: http://127.0.0.1:9308/ tags: - name: Index description: Operations regarding adding, updating or deleting documents paths: /bulk: post: summary: Bulk table operations description: "Sends multiple operatons like inserts, updates, replaces or deletes. \nFor each operation it's object must have same format as in their dedicated method. \nThe method expects a raw string as the batch in NDJSON.\n Each operation object needs to be serialized to \n JSON and separated by endline (\\n). \n \n An example of raw input:\n \n ```\n {\"insert\": {\"table\": \"movies\", \"doc\": {\"plot\": \"A secret team goes to North Pole\", \"rating\": 9.5, \"language\": [2, 3], \"title\": \"This is an older movie\", \"lon\": 51.99, \"meta\": {\"keywords\":[\"travel\",\"ice\"],\"genre\":[\"adventure\"]}, \"year\": 1950, \"lat\": 60.4, \"advise\": \"PG-13\"}}}\n \\n\n {\"delete\": {\"table\": \"movies\",\"id\":700}}\n ```\n \n Responds with an object telling whenever any errors occured and an array with status for each operation:\n \n ```\n {\n 'items':\n [\n {\n 'update':{'table':'products','id':1,'result':'updated'}\n },\n {\n 'update':{'table':'products','id':2,'result':'updated'}\n }\n ],\n 'errors':false\n }\n ```\n" operationId: bulk tags: - Index externalDocs: url: https://manual.manticoresearch.com/Updating_documents/UPDATE requestBody: required: true content: application/x-ndjson: schema: type: string responses: '200': description: item updated content: application/json: schema: $ref: '#/components/schemas/bulkResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /delete: post: summary: Delete a document in a table operationId: delete description: "Delete one or several documents.\nThe method has 2 ways of deleting: either by id, in case only one document is deleted or by using a match query, in which case multiple documents can be delete .\nExample of input to delete by id:\n\n ```\n {'table':'movies','id':100}\n ```\n\nExample of input to delete using a query:\n\n ```\n {\n 'table':'movies',\n 'query':\n {\n 'bool':\n {\n 'must':\n [\n {'query_string':'new movie'}\n ]\n }\n }\n }\n ```\n\nThe match query has same syntax as in for searching.\nResponds with an object telling how many documents got deleted: \n\n ```\n {'table':'products','updated':1}\n ```\n" tags: - Index externalDocs: url: https://manual.manticoresearch.com/Updating_documents/UPDATE requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/deleteDocumentRequest' example: table: test query: match: title: apple responses: '200': description: item updated content: application/json: schema: $ref: '#/components/schemas/deleteResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /insert: post: summary: Create a new document in a table x-is_indexapi: true x-is_insert: true operationId: insert description: "Insert a document. \nExpects an object like:\n \n ```\n {\n 'table':'movies',\n 'id':701,\n 'doc':\n {\n 'title':'This is an old movie',\n 'plot':'A secret team goes to North Pole',\n 'year':1950,\n 'rating':9.5,\n 'lat':60.4,\n 'lon':51.99,\n 'advise':'PG-13',\n 'meta':'{\"keywords\":{\"travel\",\"ice\"},\"genre\":{\"adventure\"}}',\n 'language':[2,3]\n }\n }\n ```\n \nThe document id can also be missing, in which case an autogenerated one will be used:\n \n ```\n {\n 'table':'movies',\n 'doc':\n {\n 'title':'This is a new movie',\n 'plot':'A secret team goes to North Pole',\n 'year':2020,\n 'rating':9.5,\n 'lat':60.4,\n 'lon':51.99,\n 'advise':'PG-13',\n 'meta':'{\"keywords\":{\"travel\",\"ice\"},\"genre\":{\"adventure\"}}',\n 'language':[2,3]\n }\n }\n ```\n \nIt responds with an object in format:\n \n ```\n {'table':'products','id':701,'created':true,'result':'created','status':201}\n ```\n" tags: - Index externalDocs: url: https://manual.manticoresearch.com/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table#Adding-documents-to-a-real-time-table requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/insertDocumentRequest' example: table: test id: 1 doc: title: sample title gid: 10 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/successResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /replace: post: summary: Replace new document in a table x-is_indexapi: true x-is_replace: true operationId: replace description: "Replace an existing document. Input has same format as `insert` operation.\nResponds with an object in format:\n\n ```\n {'table':'products','id':1,'created':false,'result':'updated','status':200}\n ```\n" tags: - Index externalDocs: url: https://manual.manticoresearch.com/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table#Adding-documents-to-a-real-time-table requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/insertDocumentRequest' example: table: test id: 1 doc: title: updated title gid: 15 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/successResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /update: post: summary: Update a document in a table x-is_indexapi: true x-is_update: true x-is_modify: true operationId: update description: "Update one or several documents.\nThe update can be made by passing the id or by using a match query in case multiple documents can be updated. For example update a document using document id:\n\n ```\n {'table':'movies','doc':{'rating':9.49},'id':100}\n ```\n\nAnd update by using a match query:\n\n ```\n {\n 'table':'movies',\n 'doc':{'rating':9.49},\n 'query':\n {\n 'bool':\n {\n 'must':\n [\n {'query_string':'new movie'}\n ]\n }\n }\n }\n ``` \n\nThe match query has same syntax as for searching.\nResponds with an object that tells how many documents where updated in format: \n\n ```\n {'table':'products','updated':1}\n ```\n" tags: - Index externalDocs: url: https://manual.manticoresearch.com/Updating_documents/UPDATE requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/updateDocumentRequest' example: table: test doc: gid: 20 query: equals: cat_id: 2 responses: '200': description: item updated content: application/json: schema: $ref: '#/components/schemas/updateResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /{table}/_update/{id}: post: summary: Partially replaces a document in a table operationId: partial_replace description: "Partially replaces a document with given id in a table\nResponds with an object of the following format: \n\n ```\n {'table':'products','updated':1}\n ```\n" tags: - Index externalDocs: url: https://manual.manticoresearch.com/Updating_documents/REPLACE#JSON-REPLACE parameters: - in: path name: table schema: type: string required: true description: Name of the percolate table - in: path name: id schema: type: integer format: uint64 required: true description: Id of the document to replace requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/replaceDocumentRequest' example: doc: price: 20 responses: '200': description: item updated content: application/json: schema: $ref: '#/components/schemas/updateResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' components: schemas: boolFilter: type: object properties: must: type: array items: $ref: '#/components/schemas/queryFilter' description: Query clauses that must match for the document to be included must_not: type: array items: $ref: '#/components/schemas/queryFilterAlias1' description: Query clauses that must not match for the document to be included should: type: array items: $ref: '#/components/schemas/queryFilterAlias2' description: Query clauses that should be matched, but are not required additionalProperties: false updateDocumentRequest: type: object description: Payload for updating a document or multiple documents in a table required: - table - doc properties: table: type: string description: Name of the document table cluster: type: string description: Name of the document cluster doc: type: object description: Object containing the document fields to update additionalProperties: true example: gid: 10 id: type: integer format: uint64 description: Document ID query: oneOf: - type: null - $ref: '#/components/schemas/queryFilter' description: Object defining conditions to perform the updates example: query: match: title: match me bulkResponse: type: object description: Success response for bulk search requests properties: items: type: array items: type: object description: List of results errors: type: boolean description: Errors occurred during the bulk operation error: type: string description: Error message describing an error if such occurred current_line: type: integer description: Number of the row returned in the response skipped_lines: type: integer description: Number of rows skipped in the response queryFilterAlias2: $ref: '#/components/schemas/queryFilter' responseErrorText: type: string description: Error message text returned in case of an error responseErrorDetails: type: object description: Detailed error information returned in case of an error response required: - type properties: type: type: string description: Type or category of the error reason: type: - string - 'null' description: Detailed explanation of why the error occurred table: type: - string - 'null' description: The table related to the error, if applicable responseError: oneOf: - $ref: '#/components/schemas/responseErrorDetails' - $ref: '#/components/schemas/responseErrorText' insertDocumentRequest: type: object description: 'Object containing data for inserting a new document into the table ' required: - table - doc properties: table: type: string description: Name of the table to insert the document into cluster: type: string description: Name of the cluster to insert the document into id: type: integer format: uint64 description: 'Document ID. If not provided, an ID will be auto-generated ' doc: type: object additionalProperties: true description: 'Object containing document data ' example: table: test doc: title: This is some title gid: 100 deleteDocumentRequest: type: object description: 'Payload for delete request. Documents can be deleted either one by one by specifying the document id or by providing a query object. For more information see [Delete API](https://manual.manticoresearch.com/Deleting_documents) ' required: - table properties: table: type: string description: Table name cluster: type: string description: Cluster name id: type: integer format: uint64 description: The ID of document for deletion query: type: object description: Defines the criteria to match documents for deletion example: table: test id: 1 queryFilter: allOf: - $ref: '#/components/schemas/fulltextFilter' - type: object properties: bool: $ref: '#/components/schemas/boolFilter' equals: type: {} description: Filter to match exact attribute values. in: type: object description: Filter to match a given set of attribute values. range: type: object description: Filter to match a given range of attribute values passed in Range objects geo_distance: $ref: '#/components/schemas/geoDistance' additionalProperties: false description: Object used to apply various conditions, such as full-text matching or attribute filtering, to a search query fulltextFilter: type: object properties: query_string: type: string description: Filter object defining a query string match: type: object description: Filter object defining a match keyword passed as a string or in a Match object match_phrase: type: object description: Filter object defining a match phrase match_all: type: object description: Filter object to select all documents additionalProperties: false description: Defines a type of filter for full-text search queries replaceDocumentRequest: type: object description: Object containing the document data for replacing an existing document in a table. required: - doc properties: doc: type: object additionalProperties: true description: Object containing the new document data to replace the existing one. example: doc: title: This is some title gid: 100 errorResponse: type: object description: Error response object containing information about the error and a status code required: - error properties: error: $ref: '#/components/schemas/responseError' status: type: integer description: HTTP status code of the error response default: 500 example: status: 500 error: an error occured successResponse: type: object description: Response object indicating the success of an operation, such as inserting or updating a document properties: table: type: string description: Name of the document table id: type: integer format: uint64 description: ID of the document affected by the request operation created: type: boolean description: Indicates whether the document was created as a result of the operation result: type: string description: Result of the operation, typically 'created', 'updated', or 'deleted' found: type: boolean description: Indicates whether the document was found in the table status: type: integer description: HTTP status code representing the result of the operation example: table: test id: 1 result: created created: true status: 201 geoDistance: type: object properties: location_anchor: type: object description: Specifies the location of the pin point used for search properties: lat: type: number description: Latitude of the anchor point lon: type: number description: Longitude of the anchor point additionalProperties: false location_source: type: string description: Field name in the document that contains location data distance_type: type: string enum: - adaptive - haversine description: Algorithm used to calculate the distance distance: type: string pattern: /^\.+(km|m|cm|mm|mi|yd|ft|in|NM|nmi|kilometers|meters|centimeters|millimeters|miles|yards|foots|inches|nauticalmiles|)$/ description: The distance from the anchor point to filter results by additionalProperties: false description: Object to perform geo-distance based filtering on queries deleteResponse: type: object description: Response object for successful delete request properties: table: type: string description: The name of the table from which the document was deleted deleted: type: integer description: Number of documents deleted id: type: integer format: uint64 description: The ID of the deleted document. If multiple documents are deleted, the ID of the first deleted document is returned found: type: boolean description: Indicates whether any documents to be deleted were found result: type: string description: Result of the delete operation, typically 'deleted' example: table: test deleted: 29 updateResponse: type: object description: Success response returned after updating one or more documents properties: table: type: string description: Name of the document table updated: type: integer description: Number of documents updated id: type: integer format: uint64 description: Document ID result: type: string description: Result of the update operation, typically 'updated' example: table: test updated: 29 queryFilterAlias1: $ref: '#/components/schemas/queryFilter' externalDocs: description: Find out more about Manticore Search url: https://manticoresearch.com/