代码之家  ›  专栏  ›  技术社区  ›  jorgen

包含空格短语的弹性搜索匹配

  •  1
  • jorgen  · 技术社区  · 6 年前

    我需要一个搜索那里应该有一个搜索匹配,如果一个关键字短语是包含的,但关键字短语可以有空格和整个短语必须在那里。

    据我所知 index_analyzer searh_analyzer 两者都可以在空间上分开或不分开,给出了四种可能性——似乎都不能满足我的需要。

    1. 在索引和搜索上拆分->不起作用,因为“一”将匹配
    2. 在索引上拆分而不是在搜索上拆分->不起作用,因为“一二”不匹配
    3. 不要在索引或搜索上拆分->不起作用,因为“一二三”不匹配
    1 回复  |  直到 6 年前
        1
  •  1
  •   rkm    6 年前

    一个可能的解决方案是创建新的 mapping 对于类型为的字段 keyword ,则不会由 ElasticSearch

    假设您有一个名为 description

    {
      ...
      "description": {
        "type": "text", // assuming you originally have it as text
        "fields": {
          "original": "keyword",
          "ignore_above": 512 // You can skip or change it and ES applies default value. 
        }
      }
    

    上面的代码意味着 弹性搜索 description.original 例如使用通配符搜索。