我应该如何格式化post_filter查询以匹配Elasticsearch中字符串内的字符串?

时间:2017-11-13 19:26:29

标签: elasticsearch lucene

我在MongoDB数据库中有一系列文章,这些文章被索引到Elasticsearch中。 MongoDB中的每篇文章都包含一系列作者姓名,如:[' Michael Jordan',' ...']。然后将每篇文章编入索引。

在Es中,我有作者聚合的聚合,但我也想应用post_filter来过滤作者的结果。如何设计post_filter查询来处理这个问题?

Es Schema(可以更改):

{
  authors: ['Michael Jordan', 'Kobe Bryant'],
  authorsString: 'Michael Jordan;Kobe Bryant;'
}

这是应用post_filter之前的示例查询:

{
  ...
  aggs: {
    authors: {
      terms: {
        field: 'authorsArray.keyword',
      },
    },
  },
  post_filter: {},
}

如果我想找到至少有一位作者是" Michael Jordan"的文章,我如何使用post_filter这样做?

2 个答案:

答案 0 :(得分:0)

如果没有分析作者字段,您可以随时按照这样的术语进行过滤

"post_filter": { 
    "term": { "authors": "Michael Jordan" }
 }

答案 1 :(得分:0)

以下是在包含许多作者姓名的单个字符串中匹配作者姓名的原因。 (Es 5.6):

navigator.requestMediaKeySystemAccess