我有一份论文索引,包括主题,作者,资源类型等方面。
允许用户按其中一个构面值过滤结果。当发生这种情况时,由于某些原因,即使我确定应该有一些匹配,其他一些方面也会消失。
例如,我知道John Smith撰写了5篇关于生态学的论文。因此,当我按术语生态学过滤时,我应该看到作者方面的约翰史密斯。相反,作者方面是完全空的,missing
值现在是一个很大的数字,在它之前是一个小数字。与此同时,许多其他方面仍然具有价值。
这是映射的样子:
{
"myindex" : {
"mappings" : {
"paper" : {
"properties" : {
"author_name" : {
"type" : "string",
"index" : "not_analyzed"
},
"description" : {
"type" : "string"
},
"pub_date" : {
"type" : "date",
"format" : "YYYY-MM-dd"
},
"pub_type" : {
"type" : "string",
"index" : "not_analyzed"
},
"source_data" : {
"type" : "nested",
"properties" : {
"code" : {
"type" : "string",
"index" : "not_analyzed"
},
"title" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
"title" : {
"type" : "string"
},
"topics" : {
"type" : "string",
"fields" : {
"raw" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}
}
}
}
}
以下是示例查询:
{
"facets": {
"history": {
"date_histogram": {
"field": "pub_date",
"interval": "year"
}
},
"authors": {
"terms": {
"field": "author_name",
"size": 10
}
},
"topics": {
"terms": {
"field": "topics.raw"
}
},
"record_types": {
"terms": {
"field": "pub_type"
}
},
"sources": {
"nested": "source_data",
"terms": {
"field": "source_data.code"
}
}
},
"suggest": {
"didyoumean": {
"term": {
"field": "title",
"size": 100
},
"text": "*"
}
},
"query": {
"filtered": {
"filter": {
"and": [
{
"term": {
"topics.raw": "Educational Technology"
}
}
]
}
}
},
"from": 0,
"size": 50
}
当我在没有过滤器的情况下运行相同的查询时,我会为每个方面获得10个项目。当我使用过滤器运行它时,我得到的结果为history
,authors
和record_types
零结果。
我尝试将facet_filter
应用于每个方面,但这似乎没有效果 - 或者,至少,它没有增加这些方面返回的记录数。