2

私はelasticsearchの初心者です。私が持っているjsonbフィールドの中にフィールドのインデックスを追加したいと思います。これはネストされた関係ではありません。elasticsearchレールのjsonbフィールドの属性のインデックスを追加する

フィールドid(整数)、user_id(整数)、data(jsonb)のテーブルペイロードがあります。

サンプルjsonb値は次のようである:

{"name" => "Test User", "values" => {"age" => 24, "gender" => "male"}, "married": false} 

私は、「データ」の「値」セクション(jsonb列)の内側に「性別」フィールドにインデックスを追加します。

データベースはポストグルです。

次のように私は、インデックスの設定を追加しました:

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" 
    } 
}} 

感謝を取得しています!

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 

JSON文書の詳細については、こちらをhttps://www.elastic.co/guide/en/elasticsearch/reference/current/object.html読む:

+0

この1つはここにあなたを助けるかもしれないように見えます:http://michael.otacoo.com/postgresql-2/postgres-9-4-feature-highlight-indexing-jsonb/ –

+0

@TarynEast ..ありがとう。私は質問を編集しました。私はelasticsearchでインデックスを追加するのを探しています。 –

答えて

0

私はjsonbオブジェクトを定義するために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, dynamic: 'true' do 
     end 
    end 
    end 
関連する問題