不确定我的映射是否在Elasticsearch中有效

时间:2015-02-26 14:47:59

标签: php mysql apache laravel elasticsearch

我正在使用我的Laravel应用程序使用此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调用_mapping?之后非常

我的映射如下所示:

"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"
                    },

我不能看到' index' =>之后我的映射中有&not_analyzed' ?或'索引' => ' not_analyzed' 之后不会在地图结构中显示?

1 个答案:

答案 0 :(得分:2)

你是对的,没有应用映射。如果映射API正确应用,您会在映射API中看到not_analyzed。

确保在写入任何数据之前应用映射。我们在应用程序启动时应用映射来验证映射是否始终正确并应用任何映射更新。

以下是如何应用映射的示例:

PUT hilden1

PUT hilden1/type1/_mapping
{
  "properties": {
    "regular": {
      "type": "string"
    },
    "indexSpecified": {
      "type": "string",
      "index": "not_analyzed"
    }
  }
}

验证映射是否使用GET api

GET hilden1/type1/_mapping

您应该看到该字段"常规"只指定它的类型,其中" indexSpecified"列为not_analyzed。这是我运行ES 1.4.4的机器的输出

{
   "hilden1": {
      "mappings": {
         "type1": {
            "properties": {
               "indexSpecified": {
                  "type": "string",
                  "index": "not_analyzed"
               },
               "regular": {
                  "type": "string"
               }
            }
         }
      }
   }
}