ElasticSearch搜索时返回数组的匹配元素

时间:2015-09-04 06:48:31

标签: elasticsearch

我索引了像

这样的文件
{
  "words":[
    {
      "word":"Rakennustietosäätiö",
      "pos":[72, 3347, 97, 3642]
    },
    {
      "word":"homevauriot",
      "pos":[792, 972, 1041, 1011]
    },
    {
      "word":"mikrobivauriot",
      "pos":[1301, 972, 1572, 1005]
    },
    {
      "word":"kulkeutumisesta",
      "pos":[616, 1643, 970, 168]
    },
    {
      "word":"terveyshaitoista",
      "pos":[630, 1813, 981, 1861]
    }
  ],
  "image":"K00277_1.jpg",
  "pdf_file":"K00277.pdf",
  "page":1
}

然后我用“Rakennustietosäätiö”这个词搜索。我希望它返回匹配的文档,但只包含匹配的元素。在这种情况下,它是

{
  "word":"Rakennustietosäätiö",
  "pos":[72, 3347, 97, 3642]
}

1 个答案:

答案 0 :(得分:0)

使用此结构无法做到这一点。 为实现这一目标,更好的方法是parent child

为每个页面创建一个父文档,为每个单词创建一个子文档。 现在您可以根据父文档中的条件搜索word文档,反之亦然。 在这种情况下,根据所使用的查询,返回的项目将是父文档或子文档。