栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

这是在您使用关键字字段

company_name
在应用程序中建立索引时发生的。

关键字分析器是一个“空操作”分析仪,它返回整个输入串作为一个单一令牌
例如,公司名称,包括

foo
Foo
fOo
将存储有情况下,只有和搜索
foo
,将只匹配
foo
作为elasticsearch最终工作在令牌匹配(区分大小写)。

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

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

步骤1:-定义索引的设置和映射。

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

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

步骤2:为所有文件建立索引

端点: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
字段上应用自定义规范化器的原因。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号