问题所在
我是elasticsearch的新手,我想了解动态映射和重新索引文档之间的关系。
根据我的实验,当动态映射打开时,文档的重新索引是自动完成的。这意味着如果向文档中添加新字段,它将自动被索引。
TEST1-带映射的索引
# 1.1 create index with mapping dynamic
PUT /product_dyn_on
{
"mappings" : {
"dynamic": true,
"properties": {
"price": { "type": "integer" }
}
}
}
# 1.2 create a document
POST /product_dyn_on/_doc/1
{ "price": 100 }
# 1.3 create a document with a field that was not mapped at the beginning
POST /product_dyn_on/_doc/2
{ "price": 100, "discount" : 20}
# 1.4 browse document to see if it has was mapped
GET /product_dyn_on/_search
GET /product_dyn_on/_search
{
"query": {"term" : {"discount" : 20}}
}
GET /product_dyn_on/_search
{
"query": {"match" : {"price" : 100}}
}
# 1.5 - update first object
PUT /product_dyn_on/_doc/1
{
"price" : 200,
"discount" : 20
}
# 1.6 - check results (both objects are returned)
GET /product_dyn_on/_search
{
"query": {"match" : {"discount" : 20}}
}
TEST2-没有映射的索引
# 2.1 create index with mapping dynamic
PUT /product_dyn_off
{
"mappings" : {
"dynamic": false,
"properties": {
"price": { "type": "integer" },
"is_active": {"type": "boolean" },
"price": { "type": "integer"},
"sold": { "type": "long"}
}
}
}
# 2.2 create a document
POST /product_dyn_off/_doc/1
{ "price": 100 }
# 2.3 create a document with a field that was not mapped at the beginning
POST /product_dyn_off/_doc/2
{ "price": 100, "discount" : 20}
# 2.4 browse document to see if it has was mapped
GET /product_dyn_off/_search
GET /product_dyn_off/_search
{
"query": {"term" : {"discount" : 20}}
}
GET /product_dyn_off/_search
{
"query": {"match" : {"price" : 100}}
}
# 2.5 - Update first object
PUT /product_dyn_off/_doc/1
{
"price" : 200,
"discount" : 20
}
# 2.6 - Check results
GET /product_dyn_off/_search
GET /product_dyn_off/_search
{
"query": {"match" : {"discount" : 20}}
}
GET /product_dyn_off/_search
{
"query": {"match" : {"price" : 200}}
}
# Clean Everything
DELETE /product_dyn_on
DELETE /product_dyn_off
默认情况下,如果发现任何新字段(null,boolean(true/false),float,integer,object,array,string(date,long,double,text field,with keyword子字段)),那么elasticsearch将索引文档,我们可以使用动态映射和模板https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-mapping.html进行定制
我们可以使用此关键字限制索引动态字段。true(默认值)、false(未索引但已存储)和strict(抛出并被拒绝的异常)html" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic.html
问题内容: 也许我缺少一些简单的东西,但仍然无法弄清楚以下内容: 从ES 6.x开始,该字段已弃用,建议使用说明(https://www.elastic.co/guide/en/elasticsearch/reference/current/copy- to.html )。 但是,给我的印象是,您需要显式指定要复制到自定义字段的字段。但是,如果我使用动态映射,则我不事先知道字段,因此不能使用? 我
我正在尝试仅对特定索引禁用动态映射创建,而不是对所有索引禁用。出于某种原因,我无法将默认映射设置为“dynamic”:“false”。所以,这里有两个选项,我可以看到: 指定属性的索引。制图员。“动态”文件弹性搜索。yml 第一个选项只能接受值:true、false和strict。因此,无法指定特定索引的子集(就像我们使用属性“action.auto_create_index”按模式所做的那样)h
我想为我的索引更新elasticsearch中的默认映射。但是所有的文档都指出我们必须为更新映射提供类型。问题是我有很多索引类型,它们是动态创建的,就像新类型的文档出现时一样。所以最好的处理方法是默认映射类型。因为我不必为每个类型定义映射。但现在我无法更新我的索引默认映射。如果可能的话,请告诉我?
我对弹性搜索一无所知。所以,如果这是一个愚蠢的问题,请原谅我,我的问题可能已经在其他地方得到了回答,但我找不到。我想使用弹性搜索作为我的网络中PDF和docx的搜索引擎。我使用fscrawler将PDF文件吸收到弹性搜索中。因为我要摄取的文档是几种语言的,所以我想使用n-graming进行词干分析。为此,我想像这样更新我的映射 现在我收到了这个错误信息 {“error”:{“root_cause”
我目前正在使用ElasticSearch(PHP客户端)构建一个电子商务系统搜索,但遇到了一个问题 我存储的数据是简单文本(如产品名称)和列表(如颜色、大小)的混合体 我遇到的问题是当产品没有任何颜色时 我有以下字段 所以当我发送一个产品时,它看起来是这样的 这就像预期的一样,但是当我尝试发送这样的东西时 它抛出了一个错误: {“error”:{“root_cause”:[{“type”:“map
问题内容: 我正在努力完成索引创建这一简单任务,目标是使用分析器和字段映射创建索引。当我使用分析器创建索引时,我可以通过分析api调用与分析器通信,但是当我添加映射信息时,创建索引调用失败,并显示“字段[$ field]]找不到Analyzer [analyzer1]”,我创建了一个脚本来显示问题: 问题答案: 我相信您的问题是这些设置需要嵌套在JSON的一个节点内,而不是您所拥有的嵌套在一个节点