【问题标题】:Use Completion Suggester for all the fields of across the Elasticsearch type对 Elasticsearch 类型的所有字段使用 Completion Suggester
【发布时间】:2019-05-02 21:03:53
【问题描述】:

我正在我的应用程序中实现 Completion Suggester,这是我的要求:

我使用的是 Elasticsearch 5.5.3(支持多种类型)。我的 Elasticsearch 中有大约 10 种类型,每种类型都有大约 10 个字符串字段。我想要做的是制作一个搜索框,当用户开始使用完成提示器输入时,它将完成短语(这 10 种类型的任何字段)。最好的方法是什么?使用 _all 字段是个好主意吗?

【问题讨论】:

    标签: elasticsearch completion


    【解决方案1】:

    是的,使用completion 类型的"custom all field" 字段是完全可行的

    首先,创建包含所有类型的索引,并确保copy 类型为completion 的自定义字段中的每个字段:

    PUT my_index
    {
      "mappings": {
        "type1": {
          "properties": {
            "field1": {
              "type": "text",
              "copy_to": "my_all"
            },
            "field2": {
              "type": "text",
              "copy_to": "my_all"
            },
            "my_all": {
              "type": "completion"
            }
          }
        },
        "type1": {
          "properties": {
            "field1": {
              "type": "text",
              "copy_to": "my_all"
            },
            "field2": {
              "type": "text",
              "copy_to": "my_all"
            },
            "my_all": {
              "type": "completion"
            }
          }
        }
      }
    }
    

    然后,您将像这样查询完成数据(即不指定任何映射类型并使用常见的my_all 字段):

    POST my_index/_search
    {
      "suggest": {
        "my-suggest": {
          "prefix": "bla",
          "completion": {
            "field": "my_all"
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 1970-01-01
      • 2019-06-10
      • 2018-07-20
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      相关资源
      最近更新 更多