web-dev-qa-db-ja.com

ネストされたjsonオブジェクトの弾性検索マッピング

ネストされたjsonドキュメントのエラスティック検索マッピングに関してサポートが必要です。私はウェブでたくさん検索しましたが、ポイント情報に役立つものは見つかりませんでした。このタイプのデータがあるとします。

{
  "name" : "Zach",
  "car" : [
    {
      "make" : "Saturn",
      "model" : "SL"
    },
    {
      "make" : "Subaru",
      "model" : "Imprezza"
    }
  ]
}
{
  "name" : "Bob",
  "car" : [
    {
      "make" : "Saturn",
      "model" : "Imprezza"
    }
  ]
}

車内には任意の数のデータオブジェクトを含めることができます。 elastic search docによると、ネストされたjsonの場合、タイプをネストされたものとして指定する必要があることがわかりました。しかし、そのネストされた型の下で変数のマッピング情報を指定する方法に関する情報はありません。

上記の例のように、私はこのようなマッピングを書くことができます。

{
  "person":{
    "properties":{
      "name" : {
        "type" : "string"
      },
      "car":{
        "type" : "nested"
      }
    }
  }
}

しかし、car.makeおよびcar.model?のマッピング情報を提供する方法

これは将来問題なく正常に動作しますか?

{
  "person": {
    "properties": {
      "name" : {
        "type" : "string"
      },
      "car": {
        "type" : "nested"
        "properties": {
          "make": {....},
          "model": {....}
        }
      }
    }
  }
}
11

あなたはこのようにそれを行うことができます:

PUT /my_index
{
  "mappings": {
    "blogpost": {
      "properties": {
        "comments": {
          "type": "nested", 
          "properties": {
            "name":    { "type": "string"  },
            "comment": { "type": "string"  },
            "age":     { "type": "short"   },
            "stars":   { "type": "short"   },
            "date":    { "type": "date"    }
          }
        }
      }
    }
  }
}

ES確定ガイドのこのセクション からの引用。

31
Andrei Stefan
put /my_index/_mapping/my_type 
{
 "person": {
   "properties": {
     "name" : {
       "type": "text",
       "analyzer": "string_lowercase",
       "fields": {
         "keyword": {
           "type": "keyword"
         }
       }
      },
      "car": {
        "type" : "nested",
        "properties": {
          "make": { 
            "type": "text",
            "analyzer": "string_lowercase",
            "fields": {
            "keyword": {
              "type": "keyword"
            }
           }
          },
          "model": { 
            "type": "text",
            "analyzer": "string_lowercase",
            "fields": {
            "keyword": {
              "type": "keyword"
             }
            }
           }
         }
       }
     }
    }
   }
0
Rajnish