Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres 9.4+中JSONB嵌入式ECOTO2模型的索引;_Postgresql_Elixir_Phoenix Framework_Ecto_Jsonb - Fatal编程技术网

Postgresql Postgres 9.4+中JSONB嵌入式ECOTO2模型的索引;

Postgresql Postgres 9.4+中JSONB嵌入式ECOTO2模型的索引;,postgresql,elixir,phoenix-framework,ecto,jsonb,Postgresql,Elixir,Phoenix Framework,Ecto,Jsonb,我不清楚如何使用Ecto2/Postgres 9.4索引存储为JSONB的嵌入式结构+ 我有一个带有两个嵌入式结构的模式,使用embeddes_one和embedded_many。它们是exto:map字段,在Postgres中表示为JSONB。我想知道如何确保它们被编入索引(使用Gin?)以便快速查询?我不确定这是否是自动发生的,是否需要向迁移中添加索引,或者是否需要使用psql等手动执行 只是想澄清一下这是如何工作的。 谢谢 我认为您只需要添加以下内容: create index(:clie

我不清楚如何使用Ecto2/Postgres 9.4索引存储为JSONB的嵌入式结构+

我有一个带有两个嵌入式结构的模式,使用embeddes_one和embedded_many。它们是exto:map字段,在Postgres中表示为JSONB。我想知道如何确保它们被编入索引(使用Gin?)以便快速查询?我不确定这是否是自动发生的,是否需要向迁移中添加索引,或者是否需要使用psql等手动执行

只是想澄清一下这是如何工作的。 谢谢


我认为您只需要添加以下内容:

create index(:clients, [:name], unique: true, using: :gin)
到您的迁移文件

或者,如果索引sql语句很复杂,您可以使用
execute
来执行,因此它会是这样的:

execute("CREATE INDEX clients_name_index ON clients USING GIN (name)")

我还没有测试过它,但我相信它应该可以工作。

这对于客户端模型中的顶级字段来说绝对是正确的,但我想问的是如何索引JSONB:map fieldsWell,去看看
JSONB索引
部分,jsonb列的语法基本上与普通列相同,因此我的第一个示例应该可以工作,除非您为索引添加一些特定选项,您将使用
execute
execute("CREATE INDEX clients_name_index ON clients USING GIN (name)")