1 defmodule Pleroma.Elasticsearch do
3 alias Pleroma.Elasticsearch.DocumentMappings
7 Config.get([:elasticsearch, :url])
12 |> Activity.get_by_id_with_object()
13 |> maybe_put_into_elasticsearch()
16 def maybe_put_into_elasticsearch({:ok, activity}) do
17 maybe_put_into_elasticsearch(activity)
20 def maybe_put_into_elasticsearch(%{data: %{"type" => "Create"}, object: %{data: %{"type" => "Note"}}} = activity) do
21 if Config.get([:search, :provider]) == Pleroma.Search.Elasticsearch do
22 actor = Pleroma.Activity.user_actor(activity)
25 |> Map.put(:user_actor, actor)
30 def maybe_put_into_elasticsearch(_) do
34 def put(%Activity{} = activity) do
35 Elastix.Document.index(
39 DocumentMappings.Activity.id(activity),
40 DocumentMappings.Activity.encode(activity)
44 def bulk_post(data, :activities) do
47 |> Enum.filter(fn x ->
49 |> Map.get(:data, %{})
50 |> Map.get("type", "")
55 %{index: %{_id: DocumentMappings.Activity.id(d)}},
56 DocumentMappings.Activity.encode(d)
69 def bulk_post(data, :users) do
74 %{index: %{_id: DocumentMappings.User.id(d)}},
75 DocumentMappings.User.encode(d)
88 def bulk_post(data, :hashtags) do
93 %{index: %{_id: DocumentMappings.Hashtag.id(d)}},
94 DocumentMappings.Hashtag.encode(d)
107 def search_activities(q) do
108 Elastix.Search.search(