弹性搜索 - 需要基于其ID属性的字段值

时间:2015-09-30 11:35:01

标签: java json elasticsearch

我使用Elastic Search尝试根据ID属性获取字段值。

这是映射的粗略图片

schoolId

schoolname

问题1

            id =1 
            text = happy
            comment : "value"

问题2

            id =2 
            text = sad
            comment : "value"

问题3

             id =1 
             text = happy
             comment : "value"

我正在使用此值的另一个文档

schoolId

schoolname

问题1

            id =2 
            text = sad
            comment : "value"

问题2

            id =1 
            text = happy 
            comment : "value"

问题3

             id =1 
             text = happy
             comment : "value"

以及映射代码

{
  "schools": {
    "mappings": {
      "admission": {
        "properties": {
          "createTime": {
            "type": "date",
            "format": "dateOptionalTime"
          },
          "q1": {
            "properties": {
              "as": {
                "properties": {
                  "comment": {
                    "type": "string"
                  },
                  "id": {
                    "type": "long"
                  },
                  "text": {
                    "type": "string"
                  }
                }
              },
              "text": {
                "type": "string"
              }
            }
          },
          "q2": {
            "properties": {
              "as": {
                "properties": {
                  "comment": {
                    "type": "string"
                  },
                  "id": {
                    "type": "long"
                  },
                  "text": {
                    "type": "string"
                  }
                }
              },
              "text": {
                "type": "string"
              }
            }
          },
          "q3": {
            "properties": {
              "as": {
                "properties": {
                  "comment": {
                    "type": "string"
                  },
                  "id": {
                    "type": "long"
                  },
                  "text": {
                    "type": "string"
                  }
                }
              },
              "text": {
                "type": "string"
              }
            }
          },
          "schoolId": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "updateTime": {
            "type": "date",
            "format": "dateOptionalTime"
          },
          "v": {
            "type": "string"
          }
        }
      }
    }
  }
}

现在我只需要那些id为1的问题的注释值,即那些回答得很开心且id = 1的问题。

不是那些被回答悲伤的问题。

我在这里使用过滤器,就像这样

{
   "fields": [
      "question1.comment",
      "question2.comment",
      "question3.comment"
   ],
         "filter": {
            "or": {
               "filters": [
                  {
                     "term": {
                        "question1.id": "1"
                     }
                  },
                  {
                     "term": {
                        "question1.id": "1"
                     }
                  },
                  {
                     "term": {
                        "question3.id": "1"
                     }
                  }
               ]
            }
         }

但它给了我所有的评论价值,包括快乐和悲伤的问题。

但我需要为快乐的问题提出意见,而不是那些悲伤的问题。

请帮忙!! 提前谢谢。

0 个答案:

没有答案