【问题标题】:Ruby and Elasticsearch for mapping partial search property用于映射部分搜索属性的 Ruby 和 Elasticsearch
【发布时间】:2020-04-20 09:43:33
【问题描述】:

我正在编写一个用 Ruby 编写的现有代码(我猜它使用了一些 Elasticsearch Gem)。 Elasticsearch 版本是 5.5。

此代码有效,但我试图了解代码的特定部分发生了什么,尤其是第二行中“名称”之后的“执行”。

mapping dynamic: false do
  indexes :title, type: 'text', analyzer: "name" do
    indexes :partial, type: 'text', analyzer: "autocomplete",
    search_analyzer: "autocomplete_search"
  end
end
  • 这是否意味着“标题”属性 有一个名为“部分”的子字段吗?
  • 是否可以将此代码转换为 curl API 调用?

【问题讨论】:

    标签: ruby elasticsearch


    【解决方案1】:

    此代码为将从您的 Ruby 代码创建的索引设置映射规则。

    这是否意味着“title”属性有一个名为“partial”的子字段?

    没有。它具有相同的字段但具有不同的索引。 doc

    是否可以将此代码转换为 curl API 调用?

    是的。我可以向您展示部分解决方案(因为您使用了一些自定义的“名称”分析器),这些解决方案也必须在您的代码中。

    PUT /test_index
    {
      "mappings": {
        "properties": {
          "title": {
            "type": "text",
            "analyzer": "name",
            "fields": {
              "partial": {
                "type": "text",
                "analyzer": "autocomplete",
                "search_analyzer": "autocomplete_search"
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • 谢谢,我测试了您的代码,但我得到“[title] 的映射定义具有不受支持的参数”。通过将“属性”更改为“标题”下的“字段”,它起作用了!那么这是否意味着“do”关键字转换为“fields”属性?
    • 抱歉,我不专心。在这种情况下,您没有嵌套字段,但 SAME 字段以不同的方式分析。我已经编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2017-05-25
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多