当前位置: 首页 > 面试题库 >

在Elasticsearch中创建或更新映射

越安翔
2023-03-14
问题内容

我是Elasticsearch的新手,目前正在实现geo_distance用于搜索的过滤器。到目前为止,我的索引具有以下映射(我已经删除了一些字段):

{
advert_index: {
   mappings: {
      advert_type: {
         properties: {
            __v: {
               type: "long"
            },
            caption: {
               type: "string"
            },
            category: {
               type: "string"
            },
            **location: {
            type: "long"
            },**

         }
      }
   }
}

geo_distance字段将在location字段上实现,示例实例如下所示:

"location": [
               71,
               60
            ],

即采用geoJSON格式[lon, lat]

我了解我将必须更新索引,以使location字段的类型为geo_point,如文档(mapping-geo-
point
)中所述。似乎我必须删除索引并创建一个新索引,但是我无法做到这一点。

我在正确的轨道上吗?如果有人可以帮助我创建新索引或使用正确的数据类型更新现有索引,我将不胜感激。

非常感谢!


问题答案:

一般来说,您可以使用 put映射
api(请参阅此处)更新索引映射:

curl -XPUT 'http://localhost:9200/advert_index/_mapping/advert_type' -d '
{
    "advert_type" : {
        "properties" : {

          //your new mapping properties

        }
    }
}
'

这对于添加新字段特别有用。但是,根据您的情况,您将尝试更改位置类型,这将导致 冲突 并阻止使用新的映射。

您可以使用put映射api 包含位置的 另一个属性添加 为经/纬阵列,但是您将无法更新以前的location字段本身。

最后,您将需要重新索引数据以考虑新映射。

最好的解决方案实际上是 创建一个新索引

如果创建另一个索引的问题是停机时间,则应查看别名以使工作顺利进行。



 类似资料:
  • 目前,我正在用一个查询检查该项是否存在,然后使用put或updateItem,我想更改它并对DDB进行一次调用。我想进行一个将更新或创建项目的查询。 下面是我的项目的一个例子: 项目类型: 如果项目存在,我想推送一个新项目,比如{papa:'dsfadsf'}(永远不要修改fa映射内的现有项目),并修改pa映射内的finish值 这是更新后的项目: 这是我尝试的,但不起作用

  • 我想为我的索引更新elasticsearch中的默认映射。但是所有的文档都指出我们必须为更新映射提供类型。问题是我有很多索引类型,它们是动态创建的,就像新类型的文档出现时一样。所以最好的处理方法是默认映射类型。因为我不必为每个类型定义映射。但现在我无法更新我的索引默认映射。如果可能的话,请告诉我?

  • 我正在尝试创建弹性贴图 但我得到以下错误: [mapper_parsing_exception][agent_id]的映射定义有不受支持的参数:[field ddata: true]

  • 问题内容: 我想对如何处理以下情况有清楚的了解: 我正在从activerecord模型中添加或删除属性,所以我想在生产中的ElasticSearch中更新其映射。 据我了解,我应该… 1-创建一个新索引并从mysql导入所有内容 这是正确的命令吗? 为了创建正确的映射,我应该已经在模型中更新了映射,对吗? 2-删除旧的映射并创建一个别名为 我会那样做,对吗? 3-重启应用 我是否缺少某些东西,或者

  • 问题内容: 我在elasticsearch网站上找到了一篇文章,描述了如何“在不停机的情况下重新编制索引”,但是每次引入需要自定义映射的新元素时,这实际上是不可接受的(http://www.elasticsearch.org/blog/changing- 零停机时间映射/ ) 有谁知道为什么我不能为Elasticsearch中的现有索引创建映射,而是为新类型创建映射?该类型尚不存在,为什么不呢?也

  • 我对弹性搜索一无所知。所以,如果这是一个愚蠢的问题,请原谅我,我的问题可能已经在其他地方得到了回答,但我找不到。我想使用弹性搜索作为我的网络中PDF和docx的搜索引擎。我使用fscrawler将PDF文件吸收到弹性搜索中。因为我要摄取的文档是几种语言的,所以我想使用n-graming进行词干分析。为此,我想像这样更新我的映射 现在我收到了这个错误信息 {“error”:{“root_cause”