Я пытаюсь использовать Elasticsearch от Elixir, используя Elastix.
Я могу выполнять базовые и дистанционные запросы, но когда я пытаюсь использовать агрегации, что-то идет не так, и я не могу понять, почему, насколько я могу судить, синтаксис моего запроса правильный.
Вот мой запрос в эликсире:
{:ok, response} = Elastix.Search.search("http://localhost:9200", "firms", [], %{query: %{query_string: %{query: query}}}, %{aggs: %{location: %{terms: %{field: "town", size: 10}}}})
(без бита aggs это работает). После добавления бита aggs я получаю эту ошибку:
** (Protocol.UndefinedError) protocol String.Chars not implemented for %{location: %{terms: %{field: "town", size: 10}}}. This protocol is implemented for: Postgrex.Copy, Postgrex.Query, Decimal, Float, DateTime, Time, List, Version.Requirement, Atom, Integer, Version, Date, BitString, NaiveDateTime, URI
(elixir) /private/tmp/elixir-20190202-11037-tf0mjl/elixir-1.8.1/lib/elixir/lib/string/chars.ex:3: String.Chars.impl_for!/1
(elixir) /private/tmp/elixir-20190202-11037-tf0mjl/elixir-1.8.1/lib/elixir/lib/string/chars.ex:22: String.Chars.to_string/1
(elixir) lib/uri.ex:109: URI.encode_kv_pair/1
(elixir) lib/enum.ex:1399: anonymous fn/4 in Enum.map_join/3
(stdlib) maps.erl:257: :maps.fold_1/3
(elixir) lib/enum.ex:1956: Enum.map_join/3
(elastix) lib/elastix/http.ex:72: Elastix.HTTP.append_query_string/2
(elastix) lib/elastix/search.ex:60: Elastix.Search.search/6
(legaldirectory) lib/direct/users.ex:237: Directory.Users.simple_query/1
Я действительно не понимаю, почему этот раздел недействителен или вызывает ошибку. (И почему все в порядке с «aggs», но не с остальными.
Любые указатели очень ценятся !!