1
我需要在哪些地方需要使用以下標準執行搜索。如何在Elasticsearch中選擇合適的分析器
1]不區分大小寫匹配
2]的特殊字符匹配
3]部分匹配
我使用「的ngram濾波器」,如下所示,滿足上述所有需求 但是我將被編入索引非常龐大的數據,將有像「評論」,「描述」等字段,可能長達150字。 從網站的引用我認爲使用「ngram」過濾器將導致大量磁盤空間使用。 是否有任何替代,以滿足上述要求
{
"template": "*",
"settings": {
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 25
}
},
"analyzer": {
"case_insensitive": {
"tokenizer": "whitespace",
"filter": [
"ngram_filter",
"lowercase"
]
},
"search_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": "lowercase"
}
}
}
},
"mappings": {
"incidents": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "string",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "case_insensitive",
"search_analyzer": "search_analyzer"
}
}
}
]
}
}
}
謝謝!
感謝隨機! ,我嘗試使用通配符進行部分匹配,但匹配區分大小寫,因此無法使用它。 我們可以對包含大約150-200字的字段使用ngram過濾器。 – SSG
您也可以嘗試'query_string'查詢。但出於性能原因,最好繼續使用n-gram。它不應該帶來太多的開銷,因爲它們也是令牌而不是唯一的。所以,令牌本身只存儲一次。標記條目存儲爲引用,而不是整個字符串 – Random
我已經發布了具有相同上下文的另一個問題,您可以在此幫忙嗎? https://stackoverflow.com/questions/44300200/elasticsearch-can-we-apply-both-n-gram-and-language-analyzers-during-indexing – SSG