如何在es中查询反向路径层次标记器?

4si2a6ki  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(0)|浏览(262)

我有一个定义如下的索引,它包含两个我感兴趣的字段externalnodeidpath和reverseeexternalnodeidpath。对于这两个字段,我使用了路径层次标记器,其中reverseexternalnodeidpath reverse config标志设置为true。

{
   "dev_agreement-search-service_customer_1":{
      "mappings":{
         "properties":{
            "customer":{
               "properties":{
                  "externalNodeIdPath":{
                     "type":"text",
                     "analyzer":"custom_path_tree"
                  },
                  "reverseExternalNodeIdPath":{
                     "type":"text",
                     "analyzer":"custom_path_tree_reversed"
                  }
               }
            }
         }
      }
   }
}

下面是我为这个索引添加的数据。

1. {
   "reverseExternalNodeIdPath":"9100021.9200068.9300955.1003555",
   "externalNodeIdPath":"9100021.9200068.9300955.1003555"
}

2. {
   "reverseExternalNodeIdPath":"9100021.9200068.9300955",
   "externalNodeIdPath":"9100021.9200068.9300955"
}

3. {
   "reverseExternalNodeIdPath":"9100021.9200068",
   "externalNodeIdPath":"9100021.9200068"
}

现在,当我对字段reverseexternalnodeidpath执行下面的查询时,它将路径层次标记器和reverse设置为true,它将产生一个结果。但我的理解是,它也应该显示它的所有父结果(比如externalnodeidpath包含路径层次标记器,但reverse没有设置为true)。就像1003555的父母是9300955。9300955的父母是9200068。9200068的父母是9100021。
所以实际结果应该是三个,如下所示

query : GET /dev_agreement-search-service_customer_1/_search {
   "query":{
      "term":{
         "customer.reverseExternalNodeIdPath":{
            "value":"1003555"
         }
      }
   }
}

result from ES : {
   "reverseExternalNodeIdPath":"9100021.9200068.9300955.1003555",
   "externalNodeIdPath":"9100021.9200068.9300955.1003555"
}

actual result should be :

1. {
   "reverseExternalNodeIdPath":"9100021.9200068.9300955.1003555",
   "externalNodeIdPath":"9100021.9200068.9300955.1003555"
}

2. {
   "reverseExternalNodeIdPath":"9100021.9200068.9300955",
   "externalNodeIdPath":"9100021.9200068.9300955"
}

3. {
   "reverseExternalNodeIdPath":"9100021.9200068",
   "externalNodeIdPath":"9100021.9200068"
}

请让我知道我的理解是否正确,如果它是正确的,我哪里做错了。我想实现自顶向下的方法(externalnodeidpath)和自下而上的方法(reverseexternalnodeidpath)查询。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题