2017-08-04 8 views
0

であるかのように、私は次のオブジェクトタイプでESインデックスを持っている:ElasticSearch:文字列として保存された検索のJSONフィールドには、ネストされたオブジェクト

{ 
    "_index": "my_index", 
    "_type": "logs", 
    "_id": "150", 
    "_score": 18.605173, 
    "_source": { 
     "APP_ID": "my id", 
     "APP_VALUE": "{\"groupIds\":[798,919],\"Name\":\"groupTestRep\",\"User\":\"TEST USER\"}", 
     "LAST_MOD_DATE": 1461711863000, 
    } 
}, 

は、正確なユーザーのためにAPP_VALUEフィールドを検索するための決定的な方法はありますかgroupdIds。理想的なシナリオは、ネストされたオブジェクトとして文字列を格納することですが、私の場合は不可能です。だから、この文字列をネストされたオブジェクトのように照会する方法があるのだろうかと思っていました。

答えて

0

APP_VALUEは、オブジェクトではなく文字列値としてインデックス付けする必要があります。

"APP_VALUE":{ "タイプ": "オブジェクト"、 "プロパティ":{ "groupIds":{ "タイプ": "長い"}、 "名前":{ "タイプ": "文字列 "}、 "ユーザー":{" タイプ ": "文字列"}、 ... }

あなたは絶対にあなたが としてインデックスそれをできたことを行うことができない場合は、 "インデックス": "not_analyzed" 、 "position_increment_gap":100

これはあなたが期待しているものを与えるかもしれません。そのオブジェクトからよりユニークなクエリーを作成したい場合は、後で問題を解決することができます。これは、このフィールドを索引付けするため、検索可能ですが、指定されたとおりに正確に索引付けされます。

関連する問題