用到了 6.2, 还以为像 5.X 一样允许建立 父 - 子关系文档 , 即一个索引下允许映射多个类型, 操作后发现行不通
如下代码:
- PUT /company
- {
- "mappings": {"branch": {},
- "employee": {
- "_parent": {
- "type": "branch"
- }
- }
- }
- }
找到最新的官方文档, 给出了说明, 大意是:
6.0.0 移除了一个索引允许映射多个类型, 虽然还支持同索引多类型查询, 但是 Elasticsearch 7.0.0 的版本将完全放弃
不过官方给了另外的方案解决
- Custom type fieldedit
- Of course, there is a limit to how many primary shards can exist in a cluster so you may not want to waste an entire shard for a collection of only a few thousand documents. In this case, you can implement your own custom type field which will work in a similar way to the old _type.
- Lets take the user/tweet example above. Originally, the workflow would have looked something like this:
- PUT twitter
- {
- "mappings": {
- "user": {
- "properties": {
- "name": { "type": "text" },
- "user_name": { "type": "keyword" },
- "email": { "type": "keyword" }
- }
- },
- "tweet": {
- "properties": {
- "content": { "type": "text" },
- "user_name": { "type": "keyword" },
- "tweeted_at": { "type": "date" }
- }
- }
- }
- }
- PUT twitter/user/kimchy
- {
- "name": "Shay Banon",
- "user_name": "kimchy",
- "email": "shay@kimchy.com"
- }
- PUT twitter/tweet/1
- {
- "user_name": "kimchy",
- "tweeted_at": "2017-10-24T09:00:00Z",
- "content": "Types are going away"
- }
- GET twitter/tweet/_search
- {
- "query": {
- "match": {
- "user_name": "kimchy"
- }
- }
- }
- You could achieve the same thing by adding a custom type field as follows:
- PUT twitter
- {
- "mappings": {
- "_doc": {
- "properties": {
- "type": { "type": "keyword" },
- "name": { "type": "text" },
- "user_name": { "type": "keyword" },
- "email": { "type": "keyword" },
- "content": { "type": "text" },
- "tweeted_at": { "type": "date" }
- }
- }
- }
- }
- PUT twitter/_doc/user-kimchy
- {
- "type": "user",
- "name": "Shay Banon",
- "user_name": "kimchy",
- "email": "shay@kimchy.com"
- }
- PUT twitter/_doc/tweet-1
- {
- "type": "tweet",
- "user_name": "kimchy",
- "tweeted_at": "2017-10-24T09:00:00Z",
- "content": "Types are going away"
- }
- GET twitter/_search
- {
- "query": {
- "bool": {
- "must": {
- "match": {
- "user_name": "kimchy"
- }
- },
- "filter": {
- "match": {
- "type": "tweet"
- }
- }
- }
- }
- }
- The explicit type field takes the place of the implicit _type field.
这是官网的 6.x 的关于此点的描述: https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html
来源: http://www.bubuko.com/infodetail-2507218.html