映射定义具有不受支持的参数:[store:true]

时间:2015-12-20 17:54:32

标签: symfony elasticsearch foselasticabundle

我将索引ads定义如下:

fos_elastica:
    clients:
         default: { host: %elastica_host%, port: %elastica_port% }         
    indexes:
          ads:
            types:                        
                brand:
                    mappings:
                        name:
                            type: string
                            boost: 5
                        slug:
                            type: string
                            boost: 4
                        date : ~
                        isPublished: ~
                        user:
                            type: nested
                            properties: 
                                username: ~
                                email: ~
                    persistence:
                        driver: orm
                        model: Minn\AdsBundle\Entity\Brend
                        elastica_to_model_transformer:
                            service: minn_ads.transformers_elastica.brand
                        provider: ~
                        listener:
                            immediate: ~
                        finder: ~

仅供参考: 1.这是BrendUser与@ManyToOne相关联的方式

/**
 * @ORM\ManyToOne(targetEntity="Minn\UserBundle\Entity\User")
 * @ORM\JoinColumn(nullable=false)
 */
private $user;

仅供参考: 2.我正在使用F dev-master分支用于FOSElasticaBundle和Elastica。对于elasticsearch,我使用的是2.1.1。

填充命令php app/console fos:elastica:populate始终返回此错误:

[弹性曲线\异常\ ResponseException]
  {“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“[user]的映射定义具有不受支持的参数:[store:true]”}],“type”:“mapper_parsing_exception”,“reason” :“无法解析映射[品牌]:
   [user]的映射定义具有不受支持的参数:[store:true]“,”caused_by“:{”type“:”mapper_parsing_exception“,”reason“:”[user]的映射定义具有不受支持的参数:[store:true] “}}

我检查了app/logs/dev.log,发现生成的索引ads的映射有一个额外的参数"store":true。你可以检查一下:

[2015-12-20 21:28:21] elastica.DEBUG:logging request {“path”:“ads /”,“method”:“PUT”,“data”:{“mappings” :{ “品牌”:{ “属性”:{ “名”:{ “类型”: “串”, “提升”:5, “存储”:真正}, “弹头”:{ “类型”: “串” , “提升”:4, “存储”:真正}, “日期”:{ “类型”: “串”, “存储”:真正} “|评论”:{ “类型”: “串”, “商店” :真}, “用户”:{ “类型”: “嵌套”, “属性”:{ “用户名”:{ “类型”: “字符串”, “存储”:真}, “电子邮件”:{ “类型” : “串”, “存储”:真正}}, “存储”:真正}}, “dynamic_date_formats”:[], “_元”:{ “模式”: “明尼苏达州\ AdsBundle \实体\ Brend”}}}} “查询”:[], “连接”:{ “配置”:{ “报头”:[]}, “宿主”: “127.0.0.1”, “端口”:9200, “记录器”:“fos_elastica.logger “,”启用“:true}} []

以下是额外"store": true的映射。有没有关于如何配置FOSElasticaBundle以获得没有"store": true额外行的映射的想法?

{
    "mappings": {
        "brand": {
            "properties": {
                "name": {
                    "type": "string",
                    "boost": 5,
                    "store": true
                },
                "slug": {
                    "type": "string",
                    "boost": 4,
                    "store": true
                },
                "date": {
                    "type": "string",
                    "store": true
                },
                "isPublished": {
                    "type": "string",
                    "store": true
                },
                "user": {
                    "type": "nested",
                    "properties": {
                        "username": {
                            "type": "string",
                            "store": true
                        },
                        "email": {
                            "type": "string",
                            "store": true
                        }
                    },
                    "store": true  # extra line! If deleted, it will work!
                }
            }
        }
    }
}

0 个答案:

没有答案