【问题标题】:elasticsearch run any query on field existselasticsearch 对存在的字段运行任何查询
【发布时间】:2015-09-12 21:44:40
【问题描述】:

我想根据存在的字段运行任何查询/过滤器。在我们的例子中,如果用户回答了一个特定的字段,那么只有我们会存储该值,否则不会自行存储该字段。如何运行查询?

下面是我的映射:

"mappings": {
     "responses_10_57": {
        "properties": {
           "rid: {
              "type": "long"
           },
           "end_time": {
              "type": "date",
              "format": "dateOptionalTime"
           },
           "start_time": {
              "type": "date",
              "format": "dateOptionalTime"
           },
       "qid_1": {
              "type": "string",
              "fields": {
                 "raw": {
                    "type": "string",
                    "analyzer": "str_params"
                 }
              }
           },
    "qid_2": {
              "type": "string",
              "fields": {
                 "raw": {
                    "type": "string",
                    "analyzer": "str_params"
                 }
              }
           },
    "qid_3": {
              "properties": {
                 "msg_text": {
                    "type": "string"
                 },
         "msg_tags": {
                    "type": "string",
                    "fields": {
                       "raw": {
                          "type": "string",
                          "analyzer": "str_params"
                       }
                    }
                 }
              }
           }
   }
  }

}

qid_1 为姓名字段,qid_2 为类别字段,qid_3 为短信字段。

但qid_3 不是必填字段。因此,如果用户没有输入任何短信,我们将不会插入记录。

1) 我希望每个类别都统计回答第三个问题的人。

2) 我要搜索回答第三个问题的名字。

如何编写这两个查询?

【问题讨论】:

  • 我的回答有用吗?它奏效了吗?如果是这样,你能接受我的回答吗?
  • 是的,是的。谢谢亚历克斯

标签: elasticsearch


【解决方案1】:

两个查询都应该有一个exists filter,以将响应限制为仅存在qid_3(不为空)的那些文档。对于您的第一个查询,您可以尝试terms aggregation。对于第二个查询,您可以过滤源以仅包含响应中的名称或 store the field 并使用 fields

1)

{
    "size": 0,
    "filter" : {
        "exists" : { "field" : "quid_3" }
    },
    "aggs" : {
      "group_by_category" : {
        "terms" : { "field" : "qid_2" }
      }
    }
}

2)

{
  "filter" : {
    "exists" : { "field" : "quid_3" }
  },
  "_source": [ "qid_1"]
}

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2016-07-20
    • 1970-01-01
    • 2020-10-22
    • 2022-01-19
    相关资源
    最近更新 更多