在ElasticSearch中使用Slash而不使用映射进行术语过滤

时间:2016-10-21 14:36:27

标签: elasticsearch filter lucene special-characters slash

我有一个要求,我无法向ElasticSearch索引添加任何映射,因为所有索引都是动态的,并且在运行时创建,并且所有索引都有不同的字段(只有5个常用字段)。因此,我在使用URL的术语过滤器(例如http://www.domain.com/a/b)或mimetype(例如image / jpeg)时遇到问题。在不添加映射的情况下绕过斜杠或其他特殊字符的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以将模板添加到弹性搜索索引

您可以指定索引,并在运行时自动为您的所有数据创建映射。

答案 1 :(得分:0)

根据@tcarmet的回答,这就是我最终用于模板的内容。

{
    "enable_raw_string": {
        "order": 0,
        "template": "*",
        "settings": {},
        "mappings": {
          "_default_": {
            "dynamic_templates": [
              {
                "strings": {
                  "mapping": {
                    "type": "string",
                    "fields": {
                      "raw": {
                        "ignore_above": 256,
                        "index": "not_analyzed",
                        "type": "string"
                      }
                    }
                  },
                  "match_mapping_type": "string"
                }
              }
            ]
          }
        },
        "aliases": {}
      }
}

然后我可以过滤x.raw而不是x。