我可以限制elasticsearch 5.3中索引字段的数量

时间:2017-04-11 20:23:22

标签: elasticsearch elasticsearch-5

Elasticsearch的新手。我默认看到,ES为每个字段中的每个单词创建索引。但在我的用例中,我将只搜索两个字段,所以我想以某种方式告诉ES不要为文档中的所有内容创建索引,而只创建索引我在映射中指定的字段。

这是我的映射

PUT /benefits
  { 
     "mappings": {
       "benefit": {
         "_all": {"enabled": false},
          "properties": {
            "subCategory": {"type": "text"},
            "description": {"type": "text"}
         }  

       }
   }
}

我的文档看起来像这样

{
"bpi" : "123456",
"category" : "CAT1",
"subCategory" : "Primary Care Physician Copay",
"planName" : "MyPlan HMO Individual",
"description" : "0 per office visit for Convenient Care & Minute Clinics Complete ABC Document",
"categoryId" : 200.0,
"desktop360Id" : 1001.0,
"createTimeStamp" : "2017-02-21T22:00:12.000Z"

}

所以我只会在"subCategory""description"上搜索(不在"planName"或任何其他字段文本上)并创建索引/映射,如上图所示,但我是仍然可以在其他字段上搜索文本。例如,如果我搜索" MyPlan"从"planName"字段开始,搜索工作并显示此文档。是否意味着它为所有字段创建了所有字词的索引(除了' a'''类型)?我问这个问题是因为,我不想把记忆花在我不需要的索引上。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

为了从索引中排除其他字段,您必须在映射中指定它们,并将index属性设置为no值。这是一个例子

{
    "mappings": {
        "benefit": {
            "properties": {
                "subCategory": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "planName": {
                    "type": "string",
                    "index": "no"
                },
                "bpi": {
                    "type": "string",
                    "index": "no"
                },
                "category": {
                    "type": "string",
                    "index": "no"
                }
            }
        }
    }
}