1
elasticsearchにイベント情報を保存する方法を決定できません。情報はmysqlに格納されていますので、フィルタリング可能にしたいので、私はelasticsearchを使用してイベントのインデックスを作成することに決めました。各フィールドにはオプションの数が限られていますが、複数のオプションが許可されています。elasticsearchに直接文字列または数値トークンを格納する必要があります
{
"id":"1",
"name":"Event A",
"type":"Training,Workshop,Meeting",
"industrialSector":"Energy,Transport",
"country":"China"
// + 80 fields alike
}
それともelasticsearchし、保存する前に、数値トークンに文字列値を有効にするために、いくつかのバックエンドの作業を使用します:
{
"id":"1",
"name":"Event A",
"type":"1 3 5",
"industrialSector":"2 3",
"country":"7"
// + 80 fields alike
}
参照するために、マップオブジェクトがあるでしょう、私は直接、このような情報を格納する必要がありますフィールドオプションの前に保存したり、取り込んだ後:
let options =
{
type:{
Training:1,
Fair:2
Workshop:3,
Brokerage:4
Meeting:5
},
industrialSector:{
Tech:1
Energy:2
Transport:3
}
}
最初のものは少ない作業が必要ですが、それは遅く実行し、二つ以上diskspacesを必要としていますか?
ありがとう。私はこれらの2つのソリューションの間で切り替えており、どちらを決定することができませんでした。私は真剣にあなたの提案を検討しています。しかし、一部のフィールドでは順序も重要なので、配列の代わりに文字列を格納することを選択します。余分なディスクスペースは、私の2番目のソリューションと直接比較してストリングを格納する唯一の欠点ですか? – RedGiant
@ RededGiantはいソースドキュメント(elasticsearchに送信したドキュメント)はディスクに保存されますが、これを無効にするか圧縮を有効にすることができます。だから私は99%のユースケースは本当に問題ないと思う。順序が重要な場合は、私の配列が動作していないはずです、私はテキストフィールドが解決できると思います。 – MartinSchulze