使用query_string在ElasticSearch

时间:2017-03-20 15:42:40

标签: elasticsearch parent-child elasticsearch-2.0 elasticsearch-net elasticsearch-query

我们在ElasticSearch查询中发现了一个奇怪的行为。 我们有两种类型作为父母(申请人)和儿童(附件)连接在一起。

父表的映射:

 
 {
    "Applicant": {
        "properties": {
            "Name": {
                "type": "string"
            },
            "Focus": {
                "type": "string"
            },
            "KnowHowClassification": {
                "type": "string"
            }
        }
    }
 }

子表的映射:

 
{
    "Attachments_Applicant": {
        "_parent": {
            "type": "Applicant"
        },
        "properties": {
            "File": {
                "type": "attachment"
            }
        }
    }
}

我们需要查询两个表中的所有字段以查找某些关键字并返回父文档。 为此,我们使用以下查询:

 
{
  "from": 0,
  "size": 100,
  "query": {
    "bool": {
      "should": [
        {
          "has_child": {
            "type": "Attachments_Applicant",
            "query": {
              "bool": {
                "must": [
                  {
                    "query_string": {
                      "query": “{{search}}”
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "query_string": {
            "query": “{{search}}”
          }
        }
      ]
    }
  }
}

如果我们搜索“java css”(没有引号),我们会找到包含这两个术语的文档。

如果我们搜索“+ java + css”(没有引号),我们只找到在其中一个表中同时包含这些术语的文档。如果其中一个条款在申请人表格中,另一个条款在附件表格中,那么这些文件不会被退回。

有没有办法用query_string查询具有所需术语(+)的所有字段父子表?

0 个答案:

没有答案