对于没有类型的索引,您如何允许在 elasticsearch6 上使用特定的 http 方法?
Posted
技术标签:
【中文标题】对于没有类型的索引,您如何允许在 elasticsearch6 上使用特定的 http 方法?【英文标题】:How do you allow a particular http method on elasticsearch6 for indexes with no types? 【发布时间】:2018-03-27 08:10:40 【问题描述】:我正在参加一些关于弹性搜索的 udemy 课程,并尝试建立一个弹性搜索项目。我已经让批量 api 工作,并且可以成功地将批处理数据发送到弹性搜索的索引中。但是我无法在没有批量 API 的情况下发送数据。因为我在弹性搜索文档上读过,有一个“错误”的类比,即类型就像数据库中的表,而索引就像数据库。我决定在这个项目中为我想要保留的每个实体创建一个索引,即用户和统计信息。因此,我有称为统计和用户的索引。当我向邮递员提出以下要求时
headers: Content-Type application/json
POST http://localhost:9200/users
与身体:
"id": 1, "name":"myname"
我收到一个错误
"error":"uri [/users] 和方法 [POST] 的 HTTP 方法不正确, 允许:[PUT、DELETE、GET、HEAD]","status":405
我怎样才能允许这个http方法?
【问题讨论】:
因为弹性搜索文档和教程中存在相互冲突的信息,任何其他 cmets 将不胜感激。 【参考方案1】:您好,我在使用 php 和 JAVA 时遇到了同样的问题,这仅仅是因为您必须在索引名称后添加 _type(在此处描述):
https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html
试试curl -XPOST http://localhost:9200/users/_admin
或类似的东西;)
见https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html
【讨论】:
因为文档说实际上需要类型的用例并不像看起来 elastic.co/blog/index-vs-type 那么多,而且他们建议在多个索引中拆分数据,所以我没有类型。 ...也许我还是应该添加类型,因为似乎每个人都使用类型。 是的,但他们也建议允许键入搜索,这样您可以更轻松地细分数据。但是当然我刚刚看到它从 Elastic 6.0 开始就被删除了 elastic.co/blog/… 在这种情况下你的弹性版本是什么? elastic.co/blog/… 我仍然在此处至少看到正文中的类型。所以我认为类型是你的问题,就像我的问题一样;)如果它可以帮助你解决问题,请不要犹豫;) 我刚安装... 6.2 好吧,在这种情况下它应该来自正文语法,这篇文章充满了关于 ES6 的信息,它肯定会帮助你构建一个 POST 请求,这里是我找到的medium.com/@federicopanini/…,dzone.com/articles/… , dzone.com/articles/…【参考方案2】:从 6.2 版本开始,我们需要使用_doc
作为类型。
https://discuss.elastic.co/t/cant-use-doc-as-type-despite-it-being-declared-the-preferred-method/113837
https://www.elastic.co/guide/en/elasticsearch/reference/master/removal-of-types.html#_schedule_for_removal_of_mapping_types
实际上,当您说 ElasticSearch 中允许“无类型”时,它是错误的(至少对于 8.x 之前的版本)。正确的是,每个索引只允许 1 种类型。
【讨论】:
以上是关于对于没有类型的索引,您如何允许在 elasticsearch6 上使用特定的 http 方法?的主要内容,如果未能解决你的问题,请参考以下文章
Node JS - Elastic Beanstalk AWS - 允许写访问
如何使用 Cloud Function 将数据从 Firebase Firestore 索引到 Elastic App Search?