gpt4 book ai didi

java - elasticsearch 6.1.2 中不区分大小写的搜索

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:01 34 4
gpt4 key购买 nike

我正在尝试搜索以下案例

我想搜索以特定单词结尾的名称。例如:

名称:组测试

名称:小组测试

名称:小组测试组织

这是我的通配符查询

"bool" : {
"must" : [
{
"wildcard" : {
"name.keyword"" : {
"wildcard" : "*test",
"boost" : 1.0
}
}
}
]
}

它返回我“组测试”以进行区分大小写的搜索

但是我需要同时获取“group Test”和“group test”以进行不区分大小写的搜索。

我的映射如下:

 "name":{
"type":"text",
"fielddata":true
"fields":{
"keyword":{
"type":"keyword"
}
}
}

任何人都可以帮我找出elasticsearch java api 中的查询或任何其他搜索方式。

Elasticsearch 版本6.1.2

非常感谢任何帮助。

最佳答案

不幸的是,没有直接的方法可以通过 ES 配置来做到这一点 keyword类型没有 analyzer属性(property),但我找到了解决方法。请看一下这个solution :

PUT test
{
"settings": {
"analysis": {
"analyzer": {
"folding": {
"tokenizer": "standard",
"filter": [ "lowercase", "asciifolding" ]
}
},
"normalizer": {
"lowerasciinormalizer": {
"type": "custom",
"filter": [ "lowercase", "asciifolding" ]
}
}
}
},
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_as_keyword": {
"match_mapping_type": "string",
"match": "*_k",
"mapping": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
}
]
}
}
}

PUT test/1/123
{
"str_k" : "string âgáÈÒU is cool"
}

GET test/_search
{
"query": {
"wildcard": {
"str_k": "*agaeou*"
}
}
}

关于java - elasticsearch 6.1.2 中不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988951/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com