搜索具有完全不同的字段值的文档

时间:2018-08-15 21:19:05

标签: elasticsearch

我要添加具有以下结构的文档

{
    "proposta": {
        "matriculaIndicacao": 654321,
        "filial": 100,
        "cpf": "12345678901",
        "idStatus": "3",
        "status": "Reprovada",
        "dadosPessoais": {
            "nome": "John Five",
            "dataNascimento": "1980-12-01",
            "email": "fulanodasilva@fulano.com.br",
            "emailValidado": true,
            "telefoneCelular": "11 99876-9999",
            "telefoneCelularValidado": true,
            "telefoneResidencial": "11 2211-1122",
            "idGenero": "1",
            "genero": "M"
        }
    }
}

我正在尝试使用多个字段值进行搜索。 我可以通过以下搜索成功搜索具有特定cpf属性的文档

{
    "query": {
      "term" : { 
          "proposta.cpf" : "23798770823" 
      }
    }
}

但是现在我需要添加一个AND子句,例如

{
  "query": {
    "term" : { 
        "proposta.cpf" : "23798770823"
        ,"proposta.dadosPessoais.dataNascimento": "1980-12-01"
    }
  }
}

但它返回错误消息。

P.S:如果可能的话,我想在不存在该字段的地方进行搜索,它返回仅与proposta.cpf字段匹配的文档。

我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

想法是在bool/should查询中组合您的约束条件

{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "proposta.cpf": "23798770823"
          }
        },
        {
          "term": {
            "proposta.dadosPessoais.dataNascimento": "1980-12-01"
          }
        }
      ]
    }
  }
}