ElasticSearch 5 - 映射问题

时间:2016-11-18 12:27:59

标签: elasticsearch elasticsearch-mapping

我正在测试ElasticSearch 5.0,似乎我在这里遗漏了一些明显的东西。

在之前的1.x版本中,如果我想存储一个包含电子邮件等字段的文档,我只需将分析的字段设置为" not_analyzed"在映射中,然后通过电子邮件搜索文档。

好吧,我仍然无法在第5版中完成。我设置了映射:

{
"mappings": {
    "simple_strings": {
      "dynamic_templates": [
        {
          "strings_not_analyzed": {
            "match_mapping_type": "string",
            "mapping": {
              "type": "keyword"
            }
          }
        }
      ]
    }
}
}

我存储了文件。如果我获得index / _search,我得到:

{
"took": 4,
"timed_out": false,
"_shards": {
  "total": 5,
  "successful": 5,
  "failed": 0
},
"hits": {
  "total": 1,
  "max_score": 1,
  "hits": [
    {
      "_index": "common",
      "_type": "user",
      "_id": "d5eddb47-ca69-4fdd-838a-9663e8867e0b",
      "_score": 1,
      "_source": {
        "tenant": "s2auth",
        "connection": "Username-Password-Authentication",
        "email": "foo@bar.com",
        "password": "foobar",
        "debug": true,
        "id": "d5eddb47-ca69-4fdd-838a-9663e8867e0b"
      }
    }
]
}
}

但如果我发布此查询:

{
"query": {
    "bool": {
        "filter": {
            "term": {
                "email": "foo@bar.com"
            }
        }
    }
}
}

我一无所获。

我只需要复制我在ES 1.x中使用的默认映射行为:

{
"mappings": {
"_default_": {
    "dynamic_templates": [
        { "notanalyzed": {
              "match":              "*", 
              "match_mapping_type": "string",
              "mapping": {
                  "type":        "string",
                  "index":       "not_analyzed"
              }
           }
        }
      ]
   }
}
}

我的映射定义是错误的,我的搜索查询错误还是什么?

0 个答案:

没有答案