对elasticsearch中的嵌套对象进行过滤查询

时间:2015-03-16 06:28:56

标签: elasticsearch

文件:

{
  "issue_id": 1100,
  "text_content": [
    {
      "page": 1,
      "content": "First Page"
    },
    {
      "page": 2,
      "content": "Second TOC"
    }
  ]
}

上述文档在issues索引中编入索引,类型为issue_text。 下面是类型的映射。

映射:

{
  "issues": {
    "mappings": {
      "issue_text": {
        "properties": {
          "issue_id": {
            "type": "integer"
          },
          "text_contents": {
            "type": "nested",
            "include_in_parent": true,
            "properties": {
              "content": {
                "type": "string"
              },
              "page": {
                "type": "integer"
              }
            }
          }
        }
      }
    }
  }
}  

查询:

curl -XPOST "http://localhost:9200/issues/issue_text/_search" -d'{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "issue_id": 1109
        }
      },
      "query": {
        "nested": {
          "path": "text_contents",
          "query": {
            "bool": {
              "must": [
                {
                  "match": {
                    "text_contents.content": "toc"
                  }
                }
              ]
            }
          }
        }
      }
    }
  }
}'

我收到了错误消息。 嵌套:QueryParsingException [[issues] [嵌套]路径[text_contents]下的嵌套对象不是嵌套类型]。

我正在尝试获取与给定issue_id(1109)的文档匹配单词“toc”的text_contents对象。简而言之 - 尝试过滤并查找某个文档,然后对该文档中的嵌套对象执行全文搜索。

0 个答案:

没有答案