More Related Content
Similar to Elasticsearct2.1
Similar to Elasticsearct2.1 (20)
Elasticsearct2.1
- 4. Install 〜 config
• Javaはyumでinstall
• Elasticsearchは公式のrepositoriesからkeyをinport.
• Yum設定してyum installで最新(2.1.1)が入る
• 日本語の全文検索に必要なpluginをinstall
Kuromoji plugin install
bin/plugin install analysis-kuromoji
※https://www.elastic.co/guide/en/elasticsearch/plugins/master/analysis-
kuromoji.html
※https://github.com/elastic/elasticsearch-analysis-kuromoji
- 8. 主要モジュール
Ngram Tkenizer
• N-グラムでトークナイズ。Elasticsearchにある
cjk_width Token Filter
• 半角全角を統一するフィルタ。Elasticsearchにある
Lowercase Token Filter
• 英字の大文字小文字を統一するフィルタ。Elasticsearchにある
Synonym Token Filter
• 同義語を結びつけるフィルタ。Elasticsearchにある
Stop Token Filter
• 任意のワードを除去するフィルタ。Elasticsearchにある
HTML Strip Char Filter
• HTMLタグを除去するフィルタ。Elasticsearchにある
- 9. 今回作ったconfig(elasticsearch.yml)
# ---------------------------------- Index -----------------------------------
index :
analysis :
analyzer :
ja :
type : custom
tokenizer : ja_tokenizer
char_filter : [
html_strip,
kuromoji_iteration_mark
]
filter : [
lowercase,
cjk_width,
katakana_stemmer,
kuromoji_part_of_speech
]
ja_ngram :
type : custom
tokenizer : ngram_ja_tokenizer
char_filter : [html_strip]
filter : [
cjk_width,
lowercase
]
tokenizer :
ja_tokenizer :
type : kuromoji_tokenizer
mode : search
user_dictionary : /etc/elasticsearch/userdict_ja.txt
ngram_ja_tokenizer :
type : nGram
min_gram : 2
max_gram : 3
token_chars : [letter, digit]
filter :
katakana_stemmer :
type : kuromoji_stemmer
- 10. 今回作ったindex mapping
{
"order": 0,
"template": "projects01-*",
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "0"
}
},
"mappings": {
"project": {
"_source": {
"enabled": false
},
"_all": {
"analyzer": "ja",
"enabled": true
},
"properties": {
"update_time": {
"format": "YYYY-MM-dd HH:mm:ss",
"type": "date"
},
"project_id": {
"index": "not_analyzed",
"type": "string"
},
"detail": {
"analyzer": "ja",
"type": "string"
},
"suggest": {
"search_analyzer": "ja",
"analyzer": "ja",
"type": "completion"
},
"detail_ngram": {
"analyzer": "ja_ngram",
"type": "string"
},
"title": {
"analyzer": "ja",
"type": "string"
},
"title_ngram": {
"analyzer": "ja_ngram",
"type": "string"
}
}
}
},
"aliases": {
}
- 13. まだ調査が必要な箇所
• Indexの運用、更新フロー
• Pyhon curator
• Score
• 同じ検索でも現在進行しているPJを検索結果の上位へみたいな要件
が出てきそう
• Slowクエリとかの閾値
• ES_HEAP_SIZE、スワップ
• cluster、shard、replica
• Indexのバックアップ、リストア
• Pyhon製のtool、_snapshot、バイナリバックアップ
• Facet? Aggregationsでいける?