2016-03-21 16 views
0

私はユーザーデータを格納するためにmysqlを使用し、Elasticsearchでデータを検索します。 mysqlの場合、ユーザー定義のフィールドがあり、このフィールドにはJSON形式のデータを格納できます。このような弾性検索:user_definedフィールドを検索するにはどうすればよいですか?

データ例:USER_DEFINEDフィールドで

data1 = 
{ 
"name" : "test1", 
"age": 10, 
"user_defined": { 
    "a" : "aaa", 
    "b" : "bbb", 
    "c" : "ccc", 
    ..... 
    } 
} 

data2 = 
{ 
"name" : "test2", 
"age": 20, 
"user_defined": { 
    "d" : "ddd", 
    "e" : "eee", 
    "f" : "fff", 
    ..... 
    } 
} 

は、キーの数が固定されていない、値の種類全てが文字列です、私はマッピングを定義する方法を、各キーを検索することができます願っています? Elasticsearchでこの種のデータを検索する方法は?

誰でも良いアイデアはありますか?

答えて

1

あなたはこのように、"type": "object"としてuser_definedのマッピングを定義することができます。

PUT your_index 
{ 
    "mappings": { 
    "your_type": { 
     "properties": { 
     "name": { 
      "type": "string" 
     }, 
     "age": { 
      "type": "integer" 
     }, 
     "user_defined": { 
      "type": "object" 
     } 
     } 
    } 
    } 
} 

その後、あなたはインデックスは、ドキュメントことができると私はそれがないと思うQuery DSL

POST your_index/_search 
{ 
    "query": { 
    "match" : { 
     "user_defined.a" : "aaa" 
    } 
    } 
} 
+0

助けてくれてありがとう! 'user_defined'ファイルの詳細をESに伝える必要はないのですか? – pangpang

+0

これらの値に対して後で実行したい問合せの種類によっては、必要ではありません。ESはそれを把握し、すべての値が文字列であるため、簡単です。 – Val

+0

問題が見つかりました。 '.'が漢字であれば、' user_defined.a'で検索することはできません。 – pangpang

-1

Elasticsearchのドキュメントの各フィールドは、デフォルトでインデックスが付けられ、検索可能です。

弾性検索では、検索のためにSearch Lite APIQuery DSLが提供されます。

+0

で簡単にそれらを検索します答えは – pangpang

関連する問題