Elasticsearch不会将not_analyzed应用到我的映射中

时间:2015-02-27 09:58:40

标签: php mysql apache laravel elasticsearch

当我尝试将“not_analyzed”应用到我的ES映射中时,它不起作用。

我在Laravel中使用此包用于ES - Elasticquent

我的映射如下:

'ad_title' => [
            'type' => 'string',
            'analyzer' => 'standard'
        ],
        'ad_type' => [
            'type' => 'integer',
            'index' => 'not_analyzed'
        ],
        'ad_type' => [
            'type' => 'integer',
            'index' => 'not_analyzed'
        ],
        'ad_state' => [
            'type' => 'integer',
            'index' => 'not_analyzed'
        ],

然后我进行API调用以查看映射,它将输出:

"testindex": {
        "mappings": {
            "ad_ad": {
                "properties": {
                    "ad_city": {
                        "type": "integer"
                    },
                    "ad_id": {
                        "type": "long"
                    },
                    "ad_state": {
                        "type": "integer"
                    },
                    "ad_title": {
                        "type": "string",
                        "analyzer": "standard"
                    },
                    "ad_type": {
                        "type": "integer"
                    },

请注意,缺少not_analyzed。 我也无法在日志中看到任何错误/警告。

2 个答案:

答案 0 :(得分:1)

有一个简单的测试,看它是否有效:

PUT /stack
{
  "mappings": {
    "try": {
      "properties": {
        "name": {
          "type": "string",
          "index": "not_analyzed"
        }, 
        "age": {
          "type": "integer",
          "index": "not_analyzed"
        }
      }
    }
  }
}

GET /stack/_mapping

,回复是:

{
   "stack": {
      "mappings": {
         "try": {
            "properties": {
               "age": {
                  "type": "integer"
               },
               "name": {
                  "type": "string",
                  "index": "not_analyzed"
               }
            }
         }
      }
   }
}

答案 1 :(得分:1)

我从自己的经验中得到的结论是,在进行任何索引之前必须先进行映射。删除您创建的索引,分配not_analyzed映射器,然后再次索引字段,您将看到not_analyzed字段。如果这对你有用,请告诉我。谢谢。