openapi: 3.1.0 info: title: Manticore Client Index Search 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: Search description: Operations about performing searches over tables paths: /search: post: summary: Performs a search on a table x-is_search: true description: "\nThe method expects an object with the following mandatory properties:\n* the name of the table to search\n* the match query object\nFor details, see the documentation on [**SearchRequest**](SearchRequest.md)\nThe method returns an object with the following properties:\n- took: the time taken to execute the search query. - timed_out: a boolean indicating whether the query timed out. - hits: an object with the following properties:\n - total: the total number of hits found.\n - hits: an array of hit objects, where each hit object represents a matched document. Each hit object has the following properties:\n - _id: the ID of the matched document.\n - _score: the score of the matched document.\n - _source: the source data of the matched document.\n\nIn addition, if profiling is enabled, the response will include an additional array with profiling information attached. Also, if pagination is enabled, the response will include an additional 'scroll' property with a scroll token to use for pagination\nHere is an example search response:\n\n ```\n {\n 'took':10,\n 'timed_out':false,\n 'hits':\n {\n 'total':2,\n 'hits':\n [\n {'_id':'1','_score':1,'_source':{'gid':11}},\n {'_id':'2','_score':1,'_source':{'gid':12}}\n ]\n }\n }\n ```\n\nFor more information about the match query syntax and additional parameters that can be added to request and response, please see the documentation [here](https://manual.manticoresearch.com/Searching/Full_text_matching/Basic_usage#HTTP-JSON).\n" operationId: search tags: - Search externalDocs: url: https://manual.manticoresearch.com/Searching/Full_text_matching/Basic_usage#HTTP-JSON requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/searchRequest' example: - '''request=SearchRequest(table="test",query=Query(query_string="abc"))''' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/searchResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /autocomplete: post: summary: Performs an autocomplete search on a table description: "\nThe method expects an object with the following mandatory properties:\n* the name of the table to search\n* the query string to autocomplete\nFor details, see the documentation on [**Autocomplete**](Autocomplete.md)\nAn example: ``` {\n \"table\":\"table_name\",\n \"query\":\"query_beginning\"\n} ```\nAn example of the method's response:\n\n ```\n [\n {\n \"total\": 3,\n \"error\": \"\",\n \"warning\": \"\",\n \"columns\": [\n {\n \"query\": {\n \"type\": \"string\"\n }\n }\n ],\n \"data\": [\n {\n \"query\": \"hello\"\n },\n {\n \"query\": \"helio\"\n },\n {\n \"query\": \"hell\"\n }\n ]\n }\n ] \n ```\n\nFor more detailed information about the autocomplete queries, please refer to the documentation [here](https://manual.manticoresearch.com/Searching/Autocomplete).\n" operationId: autocomplete tags: - Search externalDocs: url: https://manual.manticoresearch.com/dev/Searching/Autocomplete?client=JSON requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/autocompleteRequest' example: - '''request=AutocompleteRequest(table="test",query="abc")''' responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/sqlRawResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' /pq/{table}/search: post: summary: Perform reverse search on a percolate table operationId: percolate description: "Performs a percolate search.\nThis method must be used only on percolate tables.\nExpects two parameters: the table name and an object with array of documents to be tested.\nAn example of the documents object: ```\n {\n \"query\" {\n \"percolate\": {\n \"document\": {\n \"content\":\"sample content\"\n }\n }\n }\n }\n```\nResponds with an object with matched stored queries: ```\n {\n 'timed_out':false,\n 'hits': {\n 'total':2,\n 'max_score':1,\n 'hits': [\n {\n 'table':'idx_pq_1',\n '_type':'doc',\n '_id':'2',\n '_score':'1',\n '_source': {\n 'query': {\n 'match':{'title':'some'}\n }\n }\n },\n {\n 'table':'idx_pq_1',\n '_type':'doc',\n '_id':'5',\n '_score':'1',\n '_source': {\n 'query': {\n 'ql':'some | none'\n }\n }\n }\n ]\n }\n }\n```\n" tags: - Search externalDocs: url: https://manual.manticoresearch.com/Updating_documents/UPDATE parameters: - in: path name: table schema: type: string required: true description: Name of the percolate table requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/percolateRequest' example: query: percolate: document: title: some text to match responses: '200': description: items found content: application/json: schema: $ref: '#/components/schemas/searchResponse' default: description: error content: application/json: schema: $ref: '#/components/schemas/errorResponse' components: schemas: highlightFieldOption: type: object properties: fragment_size: type: integer description: Maximum size of the text fragments in highlighted snippets per field limit: type: integer description: Maximum size of snippets per field limit_snippets: type: integer description: Maximum number of snippets per field limit_words: type: integer description: Maximum number of words per field number_of_fragments: type: integer description: Total number of highlighted fragments per field additionalProperties: false description: Options for controlling the behavior of highlighting on a per-field basis 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 queryFilterAlias2: $ref: '#/components/schemas/queryFilter' searchResponse: type: object description: Response object containing the results of a search request properties: took: type: integer description: Time taken to execute the search timed_out: type: boolean description: Indicates whether the search operation timed out aggregations: type: object additionalProperties: true description: Aggregated search results grouped by the specified criteria hits: type: object properties: max_score: type: integer description: Maximum score among the matched documents total: type: integer description: Total number of matched documents total_relation: type: string description: Indicates whether the total number of hits is accurate or an estimate hits: type: array items: $ref: '#/components/schemas/hitsHits' description: Array of hit objects, each representing a matched document description: Object containing the search hits, which represent the documents that matched the query. example: total: 2 hits: - _id: 1 _score: 1 _source: gid: 11 - _id: 2 _score: 1 _source: gid: 20 profile: type: object description: Profile information about the search execution, if profiling is enabled scroll: type: string description: Scroll token to be used fo pagination warning: type: object additionalProperties: true description: Warnings encountered during the search operation sqlRawResponse: type: array items: type: object highlight: allOf: - type: object description: Defines a query HIGHLIGHT expression to emphasize matched results properties: after_match: type: string default: description: Text inserted after the matched term, typically used for HTML formatting allow_empty: type: boolean description: Permits an empty string to be returned as the highlighting result. Otherwise, the beginning of the original text would be returned around: type: integer description: Number of words around the match to include in the highlight before_match: type: string default: description: Text inserted before the match, typically used for HTML formatting emit_zones: type: boolean description: Emits an HTML tag with the enclosing zone name before each highlighted snippet encoder: type: string enum: - default - html description: If set to 'html', retains HTML markup when highlighting fields: $ref: '#/components/schemas/highlightFields' force_all_words: type: boolean description: Ignores the length limit until the result includes all keywords force_snippets: type: boolean description: Forces snippet generation even if limits allow highlighting the entire text highlight_query: oneOf: - type: null - $ref: '#/components/schemas/queryFilter' description: Optional query object to customize highlighting behavior html_strip_mode: type: string enum: - none - strip - index - retain description: Defines the mode for handling HTML markup in the highlight limits_per_field: type: boolean description: Determines whether the 'limit', 'limit_words', and 'limit_snippets' options operate as individual limits in each field of the document no_match_size: type: integer enum: - 0 - 1 description: If set to 1, allows an empty string to be returned as a highlighting result order: type: string enum: - asc - desc - score description: Sets the sorting order of highlighted snippets pre_tags: type: string default: description: Text inserted before each highlighted snippet post_tags: type: string default: description: Text inserted after each highlighted snippet start_snippet_id: type: integer description: Sets the starting value of the %SNIPPET_ID% macro use_boundaries: type: boolean description: Defines whether to additionally break snippets by phrase boundary characters - $ref: '#/components/schemas/highlightFieldOption' aggHistogram: additionalProperties: false description: Object to use histograms in aggregation, i.e., grouping search results by histogram values properties: field: description: Field to group by example: field type: string interval: description: Interval of the histogram values example: 10 type: integer offset: description: Offset of the histogram values. Default value is 0. example: 1 type: integer keyed: description: Flag that defines if a search response will be a dictionary with the bucket keys. Default value is false. example: true type: boolean required: - field - interval aggComposite: type: object description: Object to perform composite aggregation, i.e., grouping search results by multiple fields properties: size: type: integer description: Maximum number of composite buckets in the result example: 1000 sources: type: array items: type: object description: List of objects that contain terms used for composite aggregation. additionalProperties: $ref: '#/components/schemas/aggCompositeSource' additionalProperties: false searchQuery: allOf: - $ref: '#/components/schemas/queryFilter' - type: object properties: highlight: $ref: '#/components/schemas/highlight' description: Defines a query structure for performing search operations highlightFields: oneOf: - type: array items: type: string - type: object description: List of fields available for highlighting aggCompositeTerm: type: object required: - field properties: field: type: string description: Name of field to operate with example: field1 additionalProperties: false description: Object representing a term to be used in composite aggregation. knn: type: object required: - field properties: field: type: string description: Field to perform the k-nearest neighbor search on k: type: integer deprecated: true description: Deprecated. Use the top-level `limit` parameter instead. query: oneOf: - type: string - type: array items: type: number query_vector: type: array items: type: number description: The vector used as input for the KNN search doc_id: type: integer format: uint64 description: The docuemnt ID used as input for the KNN search ef: type: integer description: Optional parameter controlling the accuracy of the search filter: $ref: '#/components/schemas/queryFilter' description: Object representing a k-nearest neighbor search query join: allOf: - type: object required: - type - 'on' - table properties: type: type: string enum: - inner - left description: Type of the join operation 'true': type: array items: $ref: '#/components/schemas/joinOn' description: List of objects defining joined tables query: $ref: '#/components/schemas/fulltextFilter' table: type: string description: Basic table of the join operation additionalProperties: false description: Object representing the join operation between two tables 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 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 queryFilterAlias1: $ref: '#/components/schemas/queryFilter' autocompleteRequest: type: object description: Object containing the data for performing an autocomplete search. required: - table - query properties: table: type: string description: The table to perform the search on query: type: string description: The beginning of the string to autocomplete options: type: object description: "Autocomplete options\n - layouts: A comma-separated string of keyboard layout codes to validate and check for spell correction. Available options - us, ru, ua, se, pt, no, it, gr, uk, fr, es, dk, de, ch, br, bg, be. By default, all are enabled.\n - fuzziness: (0,1 or 2) Maximum Levenshtein distance for finding typos. Set to 0 to disable fuzzy matching. Default is 2\n - prepend: true/false If true, adds an asterisk before the last word for prefix expansion (e.g., *word )\n - append: true/false If true, adds an asterisk after the last word for prefix expansion (e.g., word* )\n - expansion_len: Number of characters to expand in the last word. Default is 10.\n" additionalProperties: true example: table: test query: Start options: layouts: us,uk fuzziness: 0 joinCond: type: object required: - field - table properties: field: type: string description: Field to join on table: type: string description: Joined table query: $ref: '#/components/schemas/fulltextFilter' type: type: {} additionalProperties: false description: Object representing the conditions used to perform the join operation aggregation: allOf: - type: object description: Object used for grouping search results properties: terms: $ref: '#/components/schemas/aggTerms' sort: type: array items: type: {} composite: $ref: '#/components/schemas/aggComposite' histogram: $ref: '#/components/schemas/aggHistogram' responseErrorText: type: string description: Error message text returned in case of an error 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 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 percolateRequest: type: object description: Object containing the query for percolating documents against stored queries in a percolate table required: - query properties: query: type: object additionalProperties: true required: - percolate properties: percolate: type: object description: Object representing the document to percolate example: percolate: document: title: some text to match hitsHits: type: object properties: _id: type: integer format: uint64 description: The ID of the matched document _score: type: integer description: The score of the matched document _source: type: object description: The source data of the matched document _knn_dist: type: number description: The knn distance of the matched document returned for knn queries highlight: type: object description: The highlighting-related data of the matched document table: type: string description: The table name of the matched document returned for percolate queries '_type:': type: string description: The type of the matched document returned for percolate queries fields: type: object description: The percolate-related fields of the matched document returned for percolate queries additionalProperties: true description: Search hit representing a matched document searchRequest: description: Request object for search operation type: object required: - table properties: table: type: string description: The table to perform the search on query: $ref: '#/components/schemas/searchQuery' join: type: array items: $ref: '#/components/schemas/join' description: Join clause to combine search data from multiple tables highlight: $ref: '#/components/schemas/highlight' limit: type: integer description: Maximum number of results to return knn: $ref: '#/components/schemas/knn' aggs: type: object additionalProperties: $ref: '#/components/schemas/aggregation' example: agg1: terms: field: field1 size: 1000 sort: - field1: null order: asc description: Defines aggregation settings for grouping results expressions: type: object additionalProperties: type: string example: title_len: crc32(title) description: Expressions to calculate additional values for the result max_matches: type: integer description: Maximum number of matches allowed in the result offset: type: integer description: Starting point for pagination of the result options: type: object description: Additional search options profile: type: boolean description: Enable or disable profiling of the search request sort: type: {} description: Sorting criteria for the search results _source: type: {} description: Specify which fields to include or exclude in the response track_scores: type: boolean description: Enable or disable result weight calculation used for sorting example: table: your_table query: query_string: your_query joinOn: allOf: - type: object properties: right: $ref: '#/components/schemas/joinCond' additionalProperties: false - type: object properties: left: $ref: '#/components/schemas/joinCond' additionalProperties: false - type: object properties: operator: type: string enum: - eq additionalProperties: false description: Defines joined tables aggTerms: type: object required: - field properties: field: type: string description: Name of attribute to aggregate by example: field1 size: type: integer description: Maximum number of buckets in the result example: 1000 description: Object containing term fields to aggregate on additionalProperties: false 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' aggCompositeSource: type: object required: - terms properties: terms: $ref: '#/components/schemas/aggCompositeTerm' additionalProperties: false description: Object containing terms used for composite aggregation. externalDocs: description: Find out more about Manticore Search url: https://manticoresearch.com/