api: implement fuzzy search API
This PR introduces the /v1/search/fuzzy API endpoint, used for fuzzy
searching objects in Nomad. The fuzzy search endpoint routes requests
to the Nomad Server leader, which implements the Search.FuzzySearch RPC
method.
Requests to the fuzzy search API are based on the api.FuzzySearchRequest
object, e.g.
{
"Text": "ed",
"Context": "all"
}
Responses from the fuzzy search API are based on the api.FuzzySearchResponse
object, e.g.
{
"Index": 27,
"KnownLeader": true,
"LastContact": 0,
"Matches": {
"tasks": [
{
"ID": "redis",
"Scope": [
"default",
"example",
"cache"
]
}
],
"evals": [],
"deployment": [],
"volumes": [],
"scaling_policy": [],
"images": [
{
"ID": "redis:3.2",
"Scope": [
"default",
"example",
"cache",
"redis"
]
}
]
},
"Truncations": {
"volumes": false,
"scaling_policy": false,
"evals": false,
"deployment": false
}
}
The API is tunable using the new server.search stanza, e.g.
server {
search {
fuzzy_enabled = true
limit_query = 200
limit_results = 1000
min_term_length = 5
}
}
These values can be increased or decreased, so as to provide more
search results or to reduce load on the Nomad Server. The fuzzy search
API can be disabled entirely by setting `fuzzy_enabled` to `false`.
2021-02-23 20:24:52 +00:00
|
|
|
---
|
|
|
|
layout: docs
|
|
|
|
page_title: search Stanza - Agent Configuration
|
|
|
|
sidebar_title: search
|
|
|
|
description: >-
|
|
|
|
The "search" stanza specifies configuration for the search API provided
|
|
|
|
by the Nomad servers.
|
|
|
|
---
|
|
|
|
|
|
|
|
# `search` Stanza
|
|
|
|
|
|
|
|
<Placement
|
|
|
|
groups={[
|
|
|
|
['server', 'search'],
|
|
|
|
]}
|
|
|
|
/>
|
|
|
|
|
|
|
|
The `search` stanza specifies configuration for the search API provided by the
|
|
|
|
Nomad servers.
|
|
|
|
|
|
|
|
```hcl
|
|
|
|
server {
|
|
|
|
search {
|
|
|
|
fuzzy_enabled = true
|
|
|
|
limit_query = 200
|
|
|
|
limit_results = 1000
|
|
|
|
min_term_length = 5
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## `search` Parameters
|
|
|
|
|
|
|
|
- `fuzzy_enabled` `(bool: true)` - Specifies whether the [fuzzy search API][fuzzy]
|
|
|
|
is enabled. If not enabled, requests to the fuzzy search API endpoint will return
|
|
|
|
an error response.
|
|
|
|
|
|
|
|
- `limit_query` `(int: 20)` - Specifies the maximum number of Nomad objects to
|
|
|
|
search through per context type in the Nomad server before truncating results.
|
2021-04-21 19:55:17 +00:00
|
|
|
Setting this parameter to a high value may degrade Nomad server performance.
|
api: implement fuzzy search API
This PR introduces the /v1/search/fuzzy API endpoint, used for fuzzy
searching objects in Nomad. The fuzzy search endpoint routes requests
to the Nomad Server leader, which implements the Search.FuzzySearch RPC
method.
Requests to the fuzzy search API are based on the api.FuzzySearchRequest
object, e.g.
{
"Text": "ed",
"Context": "all"
}
Responses from the fuzzy search API are based on the api.FuzzySearchResponse
object, e.g.
{
"Index": 27,
"KnownLeader": true,
"LastContact": 0,
"Matches": {
"tasks": [
{
"ID": "redis",
"Scope": [
"default",
"example",
"cache"
]
}
],
"evals": [],
"deployment": [],
"volumes": [],
"scaling_policy": [],
"images": [
{
"ID": "redis:3.2",
"Scope": [
"default",
"example",
"cache",
"redis"
]
}
]
},
"Truncations": {
"volumes": false,
"scaling_policy": false,
"evals": false,
"deployment": false
}
}
The API is tunable using the new server.search stanza, e.g.
server {
search {
fuzzy_enabled = true
limit_query = 200
limit_results = 1000
min_term_length = 5
}
}
These values can be increased or decreased, so as to provide more
search results or to reduce load on the Nomad Server. The fuzzy search
API can be disabled entirely by setting `fuzzy_enabled` to `false`.
2021-02-23 20:24:52 +00:00
|
|
|
|
|
|
|
- `limit_results` `(int: 100)` - Specifies the maximum number of matching results
|
|
|
|
to accumulate per context type in the API response before truncating results.
|
|
|
|
Setting this parameter to a high value may cause excessively large API response sizes.
|
|
|
|
|
|
|
|
- `min_term_length` `(int: 2)` - Specifies the minimum size of the search term
|
|
|
|
allowed for matching with the fuzzy search API. Setting this value higher can
|
|
|
|
prevent unnecessary load on the Nomad server from broad queries.
|
|
|
|
|
|
|
|
[fuzzy]: /api-docs/search#fuzzy-searching
|