es父子文档建立查询

(一)准备

1,elasticSearch 5.6.9

2,kibana 5.6.9

3,jdk1.8

(二)创建索引,文档

1创建数据库

PUT /database?pretty


2创建子文档指向父文档(不用指定类型也可)

PUT database/station/_mapping

{

  "station":{

    "_parent":{

        "type":"line"

    },

    "properties":{

      "stationId":{"type":"long"},

      "stationName":{"type":"text"}

    }

  }

}


(三)填充数据

插入父文档一条记录 

插入id = 1的6路

POST /database/line/1

{

  "lineName":"6路",

  "lineId":"100"

}

插入id = 2的966路

POST /database/line/2

{

  "lineName":"966路",

  "lineId":"101"

}

插入子文档内容

插入station = 1

POST /database/station/1?parent=1

{

  "stationName":"文化路丰产路",

  "stationId":"1000"

}


(四)查询内容

查询数据库中line表的那一列(文档)内容(那个内容(文档)呢?是子表含有station=1000字段的表的那一列)

POST /database/line/_search

{

    "query": {

        "has_child": {

            "type": "station",

            "query": {

                "match":{

                    "stationId":"1000"

                }

            }

        }

    }

}


查询station 中的文档,条件是父索引是line

POST /database/station/_search

{

    "query": {

        "has_parent": {

            "type": "line",

            "query": {

                "match":{

                    "lineId":"100"

                }

            }

        }

    }

}

通过子文档内容查询父文档

GET database/line/_search

{

  "query": {

    "has_child": {

      "type": "station",

      "query": {

        "match": {

          "stationId": "1000"

        }

      }

    }

  }

}


排序查询之前需要开启字段可排序!!!

PUT database/_mapping/line

{

  "properties":{

    "lineId":{

      "type":"text",

      "fielddata":true

    }

  }

}

父子文档查询(模糊匹配父文档,级联子文档 并排序)


POST /database/line/_search

{

"query": {

            "bool": {

                "must": [{

                    "wildcard": {"lineName": "6"}

                },{

                    "has_child": {

                        "type": "station",

                        "query": {

                            "bool": {

                                "must": [

                                    {"term": {"stationId": "1000"}}

                                ]

                            }

                        },

                        "inner_hits": {"size":1000,

                            "sort": [

                            {

                                "stationId": "asc"

                            }

                        ]}

                    }

                }]

            }

        },

        "sort": [

            {

                "lineId": "asc"

            }

        ],

        "size": 1000

}

你可能感兴趣的:(es父子文档建立查询)