elasticsearch 我可以限制elasticsearch 5.3中索引字段的数量吗,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" /> elasticsearch 我可以限制elasticsearch 5.3中索引字段的数量吗,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" />

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

elasticsearch 我可以限制elasticsearch 5.3中索引字段的数量吗,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5,Elasticsearch的新功能。默认情况下,ES为每个字段中的每个单词创建索引。但是在我的用例中,我将只搜索两个字段,所以我想告诉ES,不要为文档中的所有内容创建索引,而只创建我在映射中指定的字段的索引 这是我的地图 PUT /benefits { "mappings": { "benefit": { "_all": {"enabled": false}, "properties": { "subCa

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

因此,我将只搜索
“子类别”
“描述”
(不搜索
“planName”
或任何其他字段文本),并创建索引/映射,如上面的映射所示,但我仍然能够搜索其他字段的文本。例如,如果我从
“planName”
字段中搜索“MyPlan”,则搜索将起作用并显示此文档。这是否意味着它为所有字段上的所有单词(除了那些“a”、“of”类型)创建了索引?我问这个问题是因为,我不想把内存花在我不需要的索引上


有什么建议吗?

为了从索引中排除其他字段,您必须在映射中指定它们,并将
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"
                }
            }
        }
    }
}

为了从索引中排除其他字段,必须在映射中指定它们,并将
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"
                }
            }
        }
    }
}

只需将
“dynamic”:“false”
添加到映射中(与“\u all”级别相同)。这将在对象级别完成,但您也可以在索引级别或模板中设置它,以便为所有索引设置它。有关这方面的信息,谢谢你,奥利弗。我想我明白了。请参见我在“回答您的问题”中添加的示例,您只需将
“dynamic”:“false”
添加到映射中(与“\u all”级别相同)。这将在对象级别完成,但您也可以在索引级别或模板中设置它,以便为所有索引设置它。有关这方面的信息,谢谢你,奥利弗。我想我明白了。看我在“回答你的问题”中的例子,我有一个后续问题。我知道我应该发布一个不同的问题,但我已经在这里输入了问题的上下文,让我问你这个问题。如何将“子类别”中的搜索结果的权重置于“描述”之上?有什么建议吗?我是通过在创建索引时向这两个字段添加“boost”值来计算的。谢谢,我还有一个后续问题。我知道我应该发布一个不同的问题,但我已经在这里输入了问题的上下文,让我问你这个问题。如何将“子类别”中的搜索结果的权重置于“描述”之上?有什么建议吗?我是通过在创建索引时向这两个字段添加“boost”值来计算的。谢谢