我可以像这样在索引上搜索特定的关键字:
GET */_search/?
{
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"TECH.keyword": {
"terms": {
"field": "TECH.keyword",
"include": ".*mine.*",
"order": {
"_count": "desc"
},
"size": 20
}
}
}
}
使用此查询,我可以获取在其TECH.keyword
字段中按“ "_count": "desc"
排序”的所有具有“ mine”的条目。这样就可以了。
实际的问题是索引在mine
字段中可能包含Mine
,MINE
或miné
甚至TECH.keyword
。我想全部归还。
有没有一种方法可以搜索忽略大小写和重音的关键字?
当前映射为:
"TECH": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
答案 0 :(得分:1)
您应该可以使用normalizer
完成此操作。您不能在analyzer
字段上使用keyword
,但是可以使用normalizer
。它允许您使用lowercase
和asciifolding
。
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/normalizer.html
PUT index { "settings": { "analysis": { "normalizer": { "my_normalizer": { "type": "custom", "char_filter": [], "filter": ["lowercase", "asciifolding"] } } } }, "mappings": { "_doc": { "properties": { "foo": { "type": "keyword", "normalizer": "my_normalizer" } } } } }