我无法让ElasticSearch突出显示使用elasticsearch-mapper-attachments索引的附件内容中的匹配。

我在/stuff/file上的数据如下所示:

{
    "id": "string"
    "name": "string"
    "attachment": "...base 64 encoded file"
}

我的映射器配置放入/stuff/file/_mapper看起来像这样:
{
    "file" : {
        "properties" : {
            "attachment" : {
                "type" : "attachment",
                "path" : "full",
                "fields": {
                    "name": { "store": true },
                    "title": { "store": true },
                    "content": { "store": true },
                    "attachment": {
                        "type": "string",
                        "term_vector": "with_positions_offsets",
                        "store": true
                    }
                }
            }
        }
    }
}

当我在/stuff/_mapper/file上查询它时,得到此返回:
{
   "stuff":{
      "mappings":{
         "file":{
            "properties":{
               "attachment":{
                  "type":"attachment",
                  "path":"full",
                  "fields":{
                     "attachment":{
                        "type":"string"
                     },
                     "author":{
                        "type":"string"
                     },
                     "title":{
                        "type":"string"
                     },
                     "name":{
                        "type":"string"
                     },
                     "date":{
                        "type":"date",
                        "format":"dateOptionalTime"
                     },
                     "keywords":{
                        "type":"string"
                     },
                     "content_type":{
                        "type":"string"
                     },
                     "content_length":{
                        "type":"integer"
                     },
                     "language":{
                        "type":"string"
                     }
                  }
               },
               "id":{
                  "type":"string"
               },
               "name":{
                  "type":"string"
               }
            }
         }
      }
   }
}

我的查询如下所示:
{
    "size": 30,
    "query": {
        "multi_match": {
            "query": "{{.Query}}",
            "operator": "and",
            "fields": ["id", "name^4", "attachment"],
            "fuzziness": "AUTO",
            "minimum_should_match": "80%"
        }
    },
    "highlight" : {
        "fields" : {
            "attachment": { }
        }
    }
}

当我搜索附件中的术语时,它将返回正确的结果,但是没有突出显示。几年前,有一个类似的问题,在几个地方用attachment交换了file,但是有评论说这又改变了……什么是正确的配置才能使突出显示起作用?

最佳答案

事实证明,您无法使用PUT覆盖映射器配置。您需要先删除现有配置(我实际上已经删除了整个数据库,配置上的DELETE似乎没有任何作用)。映射器配置实际更新后,突出显示即可正常工作。

关于elasticsearch - 使用ElasticSearch突出显示附件内容中的匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27348784/

10-13 09:16