我正在尝试通过Elastix使用Elixir的Elasticsearch。
我可以进行基本查询和距离查询,但是当我尝试使用聚合时,事情就出错了,据我所知我的查询语法是正确的,我也不知道为什么。
这是我在Elixir中的查询:
{: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
我真的不明白为什么该部分无效或导致错误。 (以及为什么对'agggs'可以接受,但其余的都不可以。 任何指针都非常感谢!