即使在映射中使用no_analyzed,Elasticsearch字符串数组也会被标记化

时间:2016-03-15 17:49:04

标签: elasticsearch lucene elasticui

这让我疯了。我的数据中有一些数组,这是一个精简的版本:

{
"fullName": "Jane Doe",
"comments": [],
"tags": [
    "blah blah tag 1",
    "blah blah tag 1"
],
"contactInformation": {
    "attachments": [
        "some file 1",
        "some file 2",
        "some file 3"
    ]
}
}

好的,我在弹性搜索中的映射如下:

curl -XPOST localhost:9200/myindex -d '{
"settings" : {
    "number_of_shards" : 1
},
"mappings" : {
    "docs" : {
        "properties" : {
            “tags” : { "type" : "string", "index" : "not_analyzed" }
            “attachments” : { "type" : "string", "index" : "not_analyzed" }
        }
    }
}
}'

现在,如果我将这些标签显示为方面,标签就会显示正常,如下所示:

[] - blah blah tag 1

[] - blah blah tag 2

然而附件是标记化的,我得到每个单词的一个方面,即

[] - 一些

[] - 档案

[] - 1

我在想,因为附件属性存在于contactInformation中,我的映射可能需要如下所示: “contactInformation.attachments”:{“type”:“string”,“index”:“not_analyzed”}

但是这引发了一个错误,而不是期待这个点。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请参阅"Complex Core Field Types"文档(特别是标题为"Mapping for Inner Objects"的部分)。

看起来应该是这样的:

"mappings" : {
  "docs" : {
    "properties" : {
      “tags” : { "type" : "string", "index" : "not_analyzed" },
      "contactInformation": {
        "type": "object",
        "properties": {
          “attachments” : { "type" : "string", "index" : "not_analyzed" }
        }
      }
    }
  }
}