您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

带有前缀查询的Elastic Search不区分大小写查询

带有前缀查询的Elastic Search不区分大小写查询

这是在您使用关键字字段company_name在应用程序中建立索引时发生的。

例如,公司名称包括fooFoofOo将存储有情况下,只有和搜索foo,将只匹配foo作为elasticsearch最终工作在令牌匹配(区分大小写)。

您需要使用标准分析器或其他自定义分析器,该分析器也可以解决您的其他用例,并在字段上使用小写标记过滤器,并使用被分析的匹配查询,并使用用于索引的同一分析器字段,这样您的搜索查询生成相同的令牌,这些令牌存储在索引中,并且您的搜索将不区分大小写。

在聊天中与用户进行了讨论,并更新了答案以满足他的要求,如下:

端点:-http:// {{hostname}}:{{port}} / {{index}}

{
  "settings": {
    "analysis": {
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "char_filter": [],
          "filter": "lowercase"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "company_name": {
        "type": "keyword",
        "normalizer": "my_normalizer"
      }
    }
  }
}

端点:http:// {{hostname}}:{{port}} / {{index}} / _doc /-> 1,2,3,4等

{
    "company_name" : "State Oil Fund of the Republic of Azerbaijan"
}

步骤3:-搜索查询

端点:-http:// {{hostname}}:{{port}} / {{index}} / _search

{ "query": {
    "prefix" : { "company_name" : "az" }
  }
}

这将带来以下预期结果:

{
    "took": 870,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "Failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 1,
        "hits": [
            {
                "_index": "prerfixsearch",
                "_type": "_doc",
                "_id": "2ec9df0fc-dc04-47bb-914f-91a9f20d09efd15f2506-293f-4fb2-bdc3-925684a930b5",
                "_score": 1,
                "_source": {
                    "company_name": "AZ Infotech Inc"
                }
            },
            {
                "_index": "prerfixsearch",
                "_type": "_doc",
                "_id": "160d01183-a308-4408-8ac1-a85da950f285edefaca2-0b68-41c6-ba34-21bbef57f84f",
                "_score": 1,
                "_source": {
                    "company_name": "Aziia Avto Ust-Kamenogorsk OOO"
                }
            },
            {
                "_index": "prerfixsearch",
                "_type": "_doc",
                "_id": "1da878175-7db5-4332-baa7-ac47bd39b646f81c1770-7ae1-4536-baed-0a4f6b20fa38",
                "_score": 1,
                "_source": {
                    "company_name": "AZURE Midstream Partners LP"
                }
            }
        ]
    }
}

,正如早期的OP一样;在搜索结果中没有提到排除第4个文档,这就是我建议创建一个文本字段的原因,以便生成单个标记,但是现在只要求前缀搜索,所以我们不需要单个标记,我们只需要1个标记,但是应该将其小写以支持不区分大小写的搜索,这就是我在company_name字段上应用自定义规范化器的原因。

其他 2022/1/1 18:20:30 有549人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶