2017-08-06 14 views
0

ネストしたフィールドでマッピングを定義します。elasticsearch:ネストされたフィールドとのマッピングを定義する方法は?

{ 
    "mappings" : { 
    "order": { 
    "properties" : { 
     "order_no" : { 
     "type" : "string" 
     }, 
     "order_products" : { 
     "type" : "nested", 
     "properties" : { 
      "order_product_no" : { 
      "type" : "int" 
      }, 
      "order_product_options" : { 
      "type" : "nested", 
      "properties" : { 
       "order_product_option_no" : { 
       "type" : "int" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
    } 
} 

私はすでにcurl -XPUT 'localhost:9200/order-statistics'を呼び出してorder-statisticsインデックスを作成していると私は、このようなintstringdoubleとして定義済みの型を使用しています、しかし、私は取得:このdocumentationによると、/order-statistics/_mapping/orderへのペイロードは次のようになりますエラーの後に何が間違っているかを見つけることはできません。

{ 
    "error":{ 
     "root_cause":[ 
      { 
       "type":"mapper_parsing_exception", 
       "reason":"Root mapping definition has unsupported parameters: [mappings : {order={properties={order_no={type=string}, order_products={type=nested, properties={order_product_no={type=int}, order_product_options={type=nested, properties={order_product_option_no={type=int}}}}}}}}]" 
      } 
     ], 
     "type":"mapper_parsing_exception", 
     "reason":"Root mapping definition has unsupported parameters: [mappings : {order={properties={order_no={type=string}, order_products={type=nested, properties={order_product_no={type=int}, order_product_options={type=nested, properties={order_product_option_no={type=int}}}}}}}}]" 
    }, 
    "status":400 
} 

誰かがこれが機能しない理由を説明できますか?

+0

どのバージョンを使用していますか?stringは新しいバージョンでは推奨されません。また、「int」は「整数」である必要があります。 – MartinSchulze

答えて

0

2.xまたは5.xのいずれのタイプでも有効でないフィールドの場合は、intがタイプとして使用されています。整数値の場合は、保存する値に応じてintegerまたはlongを使用してください。詳細は、the docs on core mapping typesを参照してください。

使用しているelasticsearchのバージョンは - 2.xまたは5.xですか?すでに5.xを使用している場合は、文字列フィールドにkeywordまたはtextを入れてください。は2.xまでの名前です。しかしこれはまだ警告です。

また、objectの代わりにnestedを使用した場合の影響に注意する必要があります。オブジェクトの配列を格納し、そのオブジェクトの複数のプロパティを照会する場合は、配列内のネストされたオブジェクトの1つがすべての条件と一致する場合にこれらのドキュメントのみが一致することを保証するために、ネストされた型を使用する必要があります。しかしこれにはコストがかかりますので、単純なobjectタイプを使用することを検討してください。詳細はthe docs on nested data type、特にthe warning at the endをご覧ください。

+0

私はES 5.5.1を使用していて、 'int'を' integer'に変更することは私の仕事です。 – inherithandle

関連する問題