ElasticSearch 7.3 has_parent / has_child不返回任何匹配

时间:2019-12-04 23:05:14

标签: elasticsearch

我有一个非常简单的联接关系,定义为:

es.indices.create( index= "docpage", body=
{
     "mappings": {
            "properties": {
                 "my_document": {
                    "type": "text"
                 },
                "my_page": {
                    "type": "text"
                 },
                "my_join_field": { 
                   "type": "join",
                   "relations": {
                     "my_document": "my_page" 
                   }
                }
            }
          }
    }
)

我正在使用索引父文档

es_d = es.index(index="docpage",doc_type="_doc",id = 1, body={"text": "I am the parent", "my_join_field": "my_document"})

我正在使用索引子文档

pages[0]='I am child 1'
pages[1]='I am child 2'
pages[2]='I am child 3'
pages[3]='I am child 4'
pages[4]='I am child 5'

for page in pages:



    res_c = es.index(index="docpage",doc_type="_doc",routing=1,body=
           {
               "text": page,
               "my-join-field": {
                    "name": "my_page",
                    "parent": "1"
                }
            })

当我使用查找索引中的所有条目时

res_doc = es.search(index="docpage", body= 
          {
              "query" : {       
                  "match_all": {}
              }
          })

我看到文档和索引中的5页。

{'took': 3, 'timed_out': False, '_shards': {'total': 1, 'successful': 1, 'skipped': 0, 'failed': 0}, 'hits': {'total': {'value': 6, 'relation': 'eq'}, 'max_score': 1.0, 'hits': [{'_index': 'docpage', '_type': '_doc', '_id': '1', '_score': 1.0, '_source': {'text': 'I am the parent', 'my_join_field': 'my_document'}}, {'_index': 'docpage', '_type': '_doc', '_id': 'QGxe0m4BLD2e5CPzVs6X', '_score': 1.0, '_routing': '1', '_source': {'text': 'I am child 1', 'my-join-field': {'name': 'my_page', 'parent': '1'}}}, {'_index': 'docpage', '_type': '_doc', '_id': 'QWxe0m4BLD2e5CPzVs79', '_score': 1.0, '_routing': '1', '_source': {'text': 'I am child 2', 'my-join-field': {'name': 'my_page', 'parent': '1'}}}, {'_index': 'docpage', '_type': '_doc', '_id': 'Qmxe0m4BLD2e5CPzV84L', '_score': 1.0, '_routing': '1', '_source': {'text': 'I am child 3', 'my-join-field': {'name': 'my_page', 'parent': '1'}}}, {'_index': 'docpage', '_type': '_doc', '_id': 'Q2xe0m4BLD2e5CPzV84X', '_score': 1.0, '_routing': '1', '_source': {'text': 'I am child 4', 'my-join-field': {'name': 'my_page', 'parent': '1'}}}, {'_index': 'docpage', '_type': '_doc', '_id': 'RGxe0m4BLD2e5CPzV84m', '_score': 1.0, '_routing': '1', '_source': {'text': 'I am child 5', 'my-join-field': {'name': 'my_page', 'parent': '1'}}}]}}

但是当我尝试使用has_parent或has_child时,我没有获得任何点击。此基本查询不会返回任何匹配。

res_doc = es.search(index="docpage", body= 
{  
 "query" : {
    "has_parent" : {         
        "parent_type": "my_document",
        "query": {
            "match": {
                "_id": 1
            }    
        }
      }
  }  
}

任何想法都会受到赞赏。 谢谢。

0 个答案:

没有答案