【问题标题】:First letter match in elasticsearch aggregationselasticsearch聚合中的首字母匹配
【发布时间】:2015-10-28 19:18:19
【问题描述】:

我正在将我的 elasticsearch 从使用构面迁移到使用聚合,并且我想创建一个查询,其中聚合代表所有以某个字母开头的创建者名称。

我已经像这样创建了一个嵌套索引:

 indexes creators, type: 'nested' do
  indexes :name, type: 'string', analyzer: 'caseinsensitive', index: 'not_analyzed'
end

以下查询将返回创建者姓名以“b”开头的所有项目。到目前为止工作出色。

      {
        "query": {
            "filtered": {
                "query": {"match_all": {}},
                "filter": {
                    "nested": {
                        "path": "creators",
                        "query": {
                            "prefix": {
                                "creators.name": {
                                    "value": "b"
                                }
                            }
                        }
                    }
                }
            }
        },
        "aggregations": {
          "creators": {
             "nested": {
                "path": "creators"
             },
             "aggs": {
                "name": {
                   "terms": {
                      "field": "creators.name",
                      "size": 100
                   }
                }
             }
          }
       }
    }

但是,查询的聚合部分会返回结果的所有聚合,包括不以“b”开头的实例创建者名称。例如,如果我有一个包含两个创建者的项目:

           "creators": [
              {
                 "name": "Beyonce"
              },
              {
                 "name": "JayZ"
              }
           ],

聚合结果将包括 JayZ 和 Beyonce。像大多数人一样,我只想要碧昂丝。

【问题讨论】:

    标签: ruby-on-rails elasticsearch


    【解决方案1】:

    试试这个查询,看看结果如何:

    {
      "query": {
        "filtered": {
          "query": {
            "match_all": {}
          },
          "filter": {
            "nested": {
              "path": "creators",
              "query": {
                "prefix": {
                  "creators.name": {
                    "value": "b"
                  }
                }
              }
            }
          }
        }
      },
      "aggregations": {
        "creators": {
          "nested": {
            "path": "creators"
          },
          "aggs": {
            "NAME": {
              "filter": {
                "prefix": {
                  "creators.name": "b"
                }
              },
              "aggs": {
                "name": {
                  "terms": {
                    "field": "creators.name",
                    "size": 100
                  }
                }
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • 是sssssss。谢谢。
    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多