mukai
February 8, 2019, 1:43am
1
文字列をMapping登録する場合、それぞれ一長一短はあると思いますが、どのような場合にどの組み合わせで登録しますか?
また、複数の案を採用した場合、文字列がどのデータ型で入っているか利用者には分りづらいと思うのですが、どのように対処されていますか?
(下記のMapping例だと、データ型は下記のようになるが、使う側からすれば分りづらい。)
text型「field01」「field02.text」「field03」
keyword型「field01.keyword」「field02」「field04」
他の方はどの様にされているか、もし宜しければ教えてください。
/* 案1:text型にkeyword型を追加(デフォルト設定) */
"field01": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
/* 案2:keyword型にtext型を追加 */
"field02": {
"type": "keyword",
"ignore_above": 256,
"fields": {
"text": {
"type": "text"
}
}
},
/* 案3:text型のみを指定 */
"field03": {
"type": "text"
},
/* 案4:keyword型のみを指定 */
"field04": {
"type": "keyword",
"ignore_above": 256
}
(参考URL) 各データ型とマルチフィールド
https://www.elastic.co/guide/en/elasticsearch/reference/current/text.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html
r4-keisuke
(Sunggyu Kei Rhie)
February 8, 2019, 7:41am
2
こんにちはー
目的と利用者次第かなと思いますけどねー
検索など要らない、表示だけで使うならkeywordだけで十分ですよね。
全文検索もといるならtextでanalyzerをどんどんつけるから分離したほうがいいでしょう。
でもそうなったらkeywordが必要な場面があるか?というところですかね。
個人的には検索のニーズとしてkeywordもtextも両方使ってるのですが
昔の癖もあってfield.field1/field.field2のような構成にはまだしてないです。
あと利用者というのが定義がわからないのでなんともですが
このドキュメントやフィールドをそのまま見せる必要があるなら検索用fieldを分けるなどしても良いかもしれませんね。
でも片付けられるので今後は
基本はkeywordでlabel的な使い方にしてその中に複数のtextを配置するんだろうなーとは思ってます。
mnozawa
(Makoto Nozawa)
February 8, 2019, 7:52am
3
textとkeywordの使い分け
ニュース記事、会話文といった「自然言語」(多くの場合はいわゆる「文章」)に対してはtextを使い、固有名詞やラベルなどの「記号」に近い役割をするものにkeywordを使っています
複数typeの定義
「基本系はtextでサブにkeyword」というようなルールを決めて運用しています
今回の例では単に「field01/02」といったら必ずtextで「field01/02.keyword」がkeyword、というような感じです
私はtext型の中でもanalyzerを複数使い分けることが多いのですが、だいたいいつもこんな感じのルールで作っています
「field01」: text型でkuromoji analyzer
「field01.ngram」: text型でngram analyzer
「field01.keyword」: keyword型
どの型、analyzerを根元に割り当てるのかはシステムの個性ですね
mukai
February 11, 2019, 4:02am
4
検索など要らない、表示だけで使うならkeywordだけで十分ですよね。
基本はkeywordでlabel的な使い方にしてその中に複数のtextを配置するんだろうなーとは思ってます。
複数typeの定義
「基本系はtextでサブにkeyword」というようなルールを決めて運用しています
今回の例では単に「field01/02」といったら必ずtextで「field01/02.keyword」がkeyword、というような感じです
なるほど、お二方のルールを決めて運用するやり方、参考になりました。
私の場合、初めにデフォルト(案1)で、その後固有名詞のデータ量を減らすため案4を採用したので、
下記の様に「field01」と「field04」の型がごっちゃになってしまいました。
/* 案1:text型にkeyword型を追加(デフォルト設定) /
/ 案4:keyword型のみを指定 */
text型「field01」
keyword型「field01.keyword」「field04」
今後は初めにルールを決めてから、テーブルを作ろうと思います。
ありがとうございました。
system
(system)
Closed
March 11, 2019, 4:02am
5
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.