2017-04-14 65 views
0

我想在索引中的某些關鍵字上運行聚合,但我想在索引和搜索時小寫所有關鍵字,但彈性5.1不支持標準化。另外,我不想將它們索引爲文本並啓用fielddata。有什麼其他的選擇來完成這個?對大小寫不敏感的關鍵字運行聚合elasticsearch 5.1

+0

你知道,fielddata在所有情況下並沒有那麼糟糕。如果你的節點允許從fielddata額外使用內存,爲什麼不呢? –

+0

@AndreiStefan我認爲彈性不建議使用它,這就是爲什麼我懷疑。 –

+1

正確,我們不建議使用它,因爲大多數時候它在分析字段上聚合是沒有意義的。但這並不是來自糟糕的設計或錯誤,例如,這只是對內存使用的改進。但是,如果您的內存使用情況良好,並且您沒有其他選擇,請使用它。 –

回答

0

您可以使用由keyword標記器和lowercase標記過濾器組成的分析器。

PUT my_index 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "my_keyword": { 
      "type":  "custom", 
      "tokenizer": "keyword", 
      "filter": ["lowercase"] 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "my_field": { 
      "type":  "text", 
      "analyzer": "standard", 
      "fields": { 
      "keyword": { 
       "type":  "text", 
       "analyzer": "my_keyword" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

我們無法對關鍵字應用分析器嗎?也不能在文本上運行聚合。 –

+0

好的,另一種選擇是在將數據發送給ES之前將數據小寫。或者在發送之前升級到5.3 – Val

+0

只是將數據小寫。我沒有看到這方面的困難。你必須重新索引 –