私はESを使用してレポート作成ソリューションをまとめようとしています。 ESでの私の経験は基本的なものなので、フィルタリング時に整数を使用しているのであれば違いがあるかどうかを知りたいと思います。フルテキストの代わりに整数を格納する方が良いですか?
私のフィルタの値が何であるかを知っており、全文検索が許可されていないことを知っています。
は、したがって、私のクエリで私は代わりに文字列検索の整数を使用するように速くだろう
{
"filter" : {
"term" : { "gender" : 1 }
}
または
{
"filter" : {
"term" : { "gender" : "male" }
}
を持つことができますどちらか?
また、整数を使用すると、ディスク領域の方が良いと思われます。
最後に、フルテキスト検索が不要な場所でMySQLを使用する方がよいでしょうか?それが違いを生む可能性がないフィルタの場合、事前に
多くのおかげで、
エンジェル
これはありがとうございます!私は第2段落の終わりにあなたが "それは何の違いもありません"ということを意味します。 基本的にはレポートモジュール全体「データレイク」からたくさんのログエントリを取得して処理し、フィルタリングの準備をしています。 考えられるのは、処理されたnginx/squid/etcのログをMySQLのそれぞれのテーブルに保存することでしたが、私たちは非正規化されたESの種類のコンテキストに移行しました。ここでは、 "user"タイプのドキュメントにはユーザ属性、 nginxログ、squidログなどのネストされたオブジェクトを1分間に取得します。 これは意味がありますか? – AngelP
"私は第2段落の最後に、"それは何の違いもありません "ということを意味します - あなたは正しい、そうです – evanv
これはMySQLではなくESに向いています。あなたがログを検索する必要がある場合は、ESでそれを行うほうがずっと簡単です。また、一定の時間が経過した後にログを期限切れにしたいと思っています。管理する。MySQLでは、テーブルからデータを削除しても、ディスク領域は再利用されません。したがって、最適化テーブルを定期的に実行してコンパクションをトリガーする必要があります。コンパイルを実行すると、書き込みのためにテーブルがロックされます。 MySQLがあなたに与える保証が必要な場合を除いて、私はおそらくES – evanv