aboutsummaryrefslogtreecommitdiffstats
path: root/plan.txt
diff options
context:
space:
mode:
Diffstat (limited to 'plan.txt')
-rw-r--r--plan.txt105
1 files changed, 105 insertions, 0 deletions
diff --git a/plan.txt b/plan.txt
new file mode 100644
index 0000000..9ab837a
--- /dev/null
+++ b/plan.txt
@@ -0,0 +1,105 @@
+
+TODO: see what other requests the default python and javascript client libraries use
+
+## basics
+
+- config: TOML, env, args
+- filter requests by method and endpoint
+- filter query parameters
+- parse request bodies (queries)
+- method/body for denied requests
+- async streaming responses
+- minimize tokio feature flags
+
+factoring:
+- validate query method (method, path, query, body)
+
+## general endpoints
+
+- ping
+ (?)
+- basic info
+ GET /
+ (?)
+- scroll
+ POST /_search/scroll
+- clear scroll
+ DELETE /_search/scroll
+
+## per-index endpoints
+
+- basic info; mapping
+ (?)
+- count
+ GET /<index>/_count
+- get document
+ GET /<index>/_doc/<_id>
+ HEAD /<index>/_doc/<_id>
+ GET /<index>/_source/<_id>
+ HEAD /<index>/_source/<_id>
+- search
+ GET /<index>/_search
+ POST /<index>/_search
+
+later:
+
+- multi-get (`_mget`)
+- multi-search (`_msearch`)
+
+## query types
+
+compound:
+- bool
+- boosting
+- constant_score
+ filter (query)
+ boost (float, optional)
+
+fulltext:
+- match
+ <field>
+ (bare str allowed)
+ query (str)
+- match_phrase
+ <field>
+ (bare str allowed)
+ value (str)
+- multi_match
+- query_string
+- simple_query_string
+
+term-level:
+- range
+ <field>
+ gt, gte, lt, lte: str or number
+- term
+ <field>
+ value: str or number
+- terms
+ <field>
+ (array of str or number)
+- wildcard
+ <field>
+ value (str)
+ boost (float, optional)
+ rewrite (str, optional)
+- exists
+ field (str)
+- ids
+ values (array of str)
+- match_all
+ boost (float, optional)
+- match_none
+ boost (float, optional)
+
+
+TODO:
+- terms_set
+- span queries
+- fuzzy (configurable)
+
+## additional stuff
+
+- HTTP content-encoding: gzip
+- content-type header; always JSON?
+- https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html