31f77fadf7a64eb760b975d7f999d864082a95d2
[akkoma] / lib / pleroma / elasticsearch / store.ex
1 defmodule Pleroma.Elasticsearch do
2 alias Pleroma.Activity
3 alias Pleroma.Elasticsearch.DocumentMappings
4
5 defp url do
6 Pleroma.Config.get([:elasticsearch, :url])
7 end
8
9 def put(%Activity{} = activity) do
10 Elastix.Document.index(
11 url(),
12 "activities",
13 "activity",
14 DocumentMappings.Activity.id(activity),
15 DocumentMappings.Activity.encode(activity)
16 )
17 end
18
19 def bulk_post(data, :activities) do
20 d =
21 data
22 |> Enum.map(fn d ->
23 [
24 %{index: %{_id: DocumentMappings.Activity.id(d)}},
25 DocumentMappings.Activity.encode(d)
26 ]
27 end)
28 |> List.flatten()
29
30 Elastix.Bulk.post(
31 url(),
32 d,
33 index: "activities",
34 type: "activity"
35 )
36 end
37
38 def search_activities(q) do
39 Elastix.Search.search(
40 url(),
41 "activities",
42 ["activity"],
43 q
44 )
45 end
46 end