尽管我很确定匹配存在,但Elasticsearch缺失了

时间:2014-03-11 19:58:36

标签: elasticsearch faceted-search facets

我有一份论文索引,包括主题,作者,资源类型等方面。

允许用户按其中一个构面值过滤结果。当发生这种情况时,由于某些原因,即使我确定应该有一些匹配,其他一些方面也会消失。

例如,我知道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个项目。当我使用过滤器运行它时,我得到的结果为historyauthorsrecord_types零结果。

我尝试将facet_filter应用于每个方面,但这似乎没有效果 - 或者,至少,它没有增加这些方面返回的记录数。

0 个答案:

没有答案