[ "$_DATE" ] || _DATE="$(date +%s)"
-debug "$REQUEST_METHOD $REQUEST_URI $SERVER_PROTOCOL"
+debug "$REQUEST_METHOD $REQUEST_URI $SERVER_PROTOCOL $_DATE"
ingest() {
local J="$1"
s;,[ \t\r\n]*"content"[ \t\r\n]*:[ \t\r\n]*"[^"]*";;
')"
J="$(json_load "${J}")"
-
- ingest "$J" "$content"\
- | "${_EXEC}/concordance.sh" \
- "$_DATA/$_INDEX/" "$(STRING "$_doc") $_DATE"
+
+ debug "Content: ${#content} bytes"
+ debug "$(json_dump "$J")"
+
+ if [ "${#content}" -gt 0 ]; then
+ ingest "$J" "$content"\
+ | "${_EXEC}/concordance.sh" \
+ "$_DATA/$_INDEX/" "$(STRING "$_doc") $_DATE"
+ fi
J="${J#obj:}"
J="$(DB2 "$J" set _indexdate num:"$_DATE")"
- if DBM "$_records" insert "$_doc" "$J"; then
+ if [ "${#content}" -eq 0 ]; then
+ printf '%s: %s\r\n' "Status" "200 OK"
+ result="updated"
+ elif DBM "$_records" insert "$_doc" "$J"; then
printf '%s: %s\r\n' "Status" "201 Created" "Location" "/${_INDEX}/_doc/$(URL "$_doc")" \
result="created"
elif DBM "$_records" update "$_doc" "$J"; then
exit 0
fi
- sed 's;$;\r;' <<-EOF
- X-elastic-product: Elasticsearch
- content-type: application/vnd.elasticsearch+json;compatible-with=8
-
+ cat <<-EOF
+ X-elastic-product: Elasticsearch\r
+ content-type: application/vnd.elasticsearch+json;compatible-with=8\r
+ \r
{ "_index": $(json_dump str:"${_INDEX}"),
"_id": $(json_dump str:"$_doc"),
"result": "$result",
result="not_found"
fi
- sed 's;$;\r;' <<-EOF
- X-elastic-product: Elasticsearch
- content-type: application/vnd.elasticsearch+json;compatible-with=8
-
+ cat <<-EOF
+ X-elastic-product: Elasticsearch\r
+ content-type: application/vnd.elasticsearch+json;compatible-with=8\r
+ \r
{ "_index": $(json_dump str:"${_INDEX}"),
"_id": $(json_dump str:"$_doc"),
"result": "$result",
)"
results="${results% }"
- sed 's;$;\r;' <<-EOF
- Status: 200 OK
- X-elastic-product: Elasticsearch
- Content-Type: application/vnd.elasticsearch+json;compatible-with=8
-
+ cat <<-EOF
+ Status: 200 OK\r
+ X-elastic-product: Elasticsearch\r
+ Content-Type: application/vnd.elasticsearch+json;compatible-with=8\r
+ \r
{ "took":0,
"timed_out":false,
"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},
[ ! "${accept#*"vnd.elasticsearch+json"*}" ] \
&& ctype="${accept}" || ctype="application/json"
- sed 's;$;\r;' <<-EOF
- HTTP/1.1 200 OK
- X-elastic-product: Elasticsearch
- content-type: ${ctype}
-
+ cat <<-EOF
+ HTTP/1.1 200 OK\r
+ X-elastic-product: Elasticsearch\r
+ content-type: ${ctype}\r
+ \r
EOF
exit 0
[ ! "${accept#*"vnd.elasticsearch+json"*}" ] \
&& ctype="${accept}" || ctype="application/json"
- sed 's;$;\r;' <<-EOF
- HTTP/1.1 200 OK
- X-elastic-product: Elasticsearch
- content-type: ${ctype}
-
+ cat <<-EOF
+ HTTP/1.1 200 OK\r
+ X-elastic-product: Elasticsearch\r
+ content-type: ${ctype}\r
+ \r
EOF
if [ "$PATH_INFO" = "/${_INDEX}/" ]; then
- sed 's;$;\r;' <<-EOF
+ cat <<-EOF
{ $(json_dump str:"${_INDEX}"): {
"aliases":{},
"mappings": {
}
EOF
else
- sed 's;$;\r;' <<-EOF
+ cat <<-EOF
{ "name" : "head",
"cluster_name" : "elasticsearch",
"version" : {