我是elasticsearch的初学者,我想在我所拥有的jsonb字段中为字段添加索引。这不是嵌套关系。
我的表有效负载包含字段id
(整数),user_id
(整数),data
(jsonb)。
示例jsonb值如下:
{"name" => "Test User", "values" => {"age" => 24, "gender" => "male"}, "married": false}
我想为"性别"添加索引里面的字段"值" "数据"(jsonb列)。
数据库是postgres。
我添加了索引配置如下:
mappings do
indexes :id, type: 'integer'
indexes :user_id, type: 'integer'
indexes :data do
indexes :gender
end
end
这是对的吗?
我收到了查询的确切结果,
{"query": {
"term": {
"user_id": 1
}
}}
但不适用于此查询
{"query": {
"term": {
"gender": "male"
}
}}
提前致谢!!!
答案 0 :(得分:0)
我使用nested
类型来定义jsonb对象:
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :id, type: 'integer'
indexes :user_id, type: 'integer'
indexes :name, type: 'text'
indexes :data, type: 'nested' do
indexes :gender, type: 'text'
indexes :age, type: 'integer'
end
end
end
请阅读https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html以获取有关JSON文档的更多信息。
如果JSONB对象中有动态字段,那么您可以像这样定义索引:
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :id, type: 'integer'
indexes :user_id, type: 'integer'
indexes :name, type: 'text'
indexes :data, dynamic: 'true' do
end
end
end