我有一个定义如下的索引,它包含两个我感兴趣的字段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)查询。
暂无答案!
目前还没有任何答案,快来回答吧!