3

Elasticsearch RC 2.0.0 を使用しています。

Elasticsearch dbで親子関係をいくつか取得しました。親オブジェクトに関連するすべての子を取得したい。私は常に結果の空のリストを受け取ります。私はelasticsearchのドキュメントの指示に従い、自分のコードをいくつかの本と比較しました. クエリが空の結果を返す理由がわかりません。

この場合、簡単な例を作成しました。2 つのオブジェクトを elasticsearch に配置し、オブジェクト a をオブジェクト b の親として設定します。次に、タイプ a の親を持つすべてのオブジェクトを取得しようとします。

これは私の入力です:

PUT test

PUT test/myobject/_mapping
    {
        "myobject":{
        "_parent" : {"type":"pobject"},
        "properties" : {
         "name" : {"type":"string"}   
        }

        }
    }

    PUT test/pobject/_mapping
    {
        "pobject" : {
            "properties": {
                "name": {"type":"string"}
            }

        }

    }

    PUT test/pobject/1
    {
        "name":"theParent"
    }

    PUT test/myobject/1?_parent=1&routing=_id
    {
        "name":"theChild"
    }

    POST test/myobject/_search?routing=_id
    {
         "query":{
            "has_parent":{
                 "type":"pobject",
            "query":{
                "match_all":{}
            }
            }
        }


    }

これは戻ります

{
   "took": 2,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": null,
      "hits": []
   }
}
4

1 に答える 1

3

間違いはここにあります:PUT test/myobject/1?_parent=1&routing=_id

パラメータはparentではなく_parentです。

POST test/myobject/1?parent=1
{
  "name": "theChild"
}

また、使用する必要はありませんrouting=_idドキュメントを参照してください。

テストするコマンドの完全なリスト:

DELETE test
PUT test

PUT test/myobject/_mapping
{
  "myobject": {
    "_parent": {
      "type": "pobject"
    },
    "properties": {
      "name": {
        "type": "string"
      }
    }
  }
}

PUT test/pobject/_mapping
{
  "pobject": {
    "properties": {
      "name": {
        "type": "string"
      }
    }
  }
}

POST test/pobject/1
{
  "name": "theParent"
}

POST test/myobject/1?parent=1
{
  "name": "theChild"
}

POST test/myobject/_search
{
  "query": {
    "has_parent": {
      "parent_type": "pobject",
      "query": {
        "match_all": {}
      }
    }
  }
}
于 2015-11-02T09:34:37.483 に答える