Files
integreat/scratch-sessions/test_solr.clj

61 lines
2.0 KiB
Clojure

;; This buffer is for Clojure experiments and evaluation.
;; Press C-j to evaluate the last expression.
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
(require '[clj-http.client :as client])
(require ' [clojure.data.json :as json])
(defn upsert-schema []
(client/post
"http://localhost:8983/solr/gettingstarted/schema"
{:headers {"Content-Type" "application/json"}
:method "POST"
:body (json/write-str {"add-field" [{"name" "client-id"
"type" "string"}
{"name" "order-date"
"type" "pdate"}]})
}))
(defn load-sales-orders []
(clojure.pprint/pprint
(doseq [[client code] (dc/q '[:find ?c ?code :where [?c :client/code ?code]] (dc/db conn))
:let [_ (println "loading" code)]
batch (->> (dc/qseq '[:find ?so ?date ?client-id
:in $ ?client-id
:where
[?so :sales-order/client ?client-id]
[?so :sales-order/date ?date]
]
(dc/db conn)
client)
(map (fn [[so date client-id]]
{"id" so
"order-date" (str date)
"client-id" (str client-id)}))
(partition-all 1000)
)]
(print ".")
(flush)
(client/post
"http://localhost:8983/solr/gettingstarted/update?commitWithin=60000"
{:headers {"Content-Type" "application/json"}
:method "POST"
:body (json/write-str batch)}))))
(comment
(try
(upsert-schema)
(catch Exception e
(println e)))
(load-sales-orders)
(dc/pull (dc/db conn) '[:client/code :db/id] [:client/code "NGOP"])
)