3

Elastic Search クエリを実行するときに頻繁にソートされる「epoch_date」フィールドがあるとします。このフィールドをどのようにマッピングすればよいですか? 今、私は保存しました:はい。このフィールドは関連性スコアにカウントされませんが、インデックスを作成する必要がありますか? このフィールドで頻繁にソートする場合、このフィールドに何を追加すれば効率的ですか?

{
    "tweet" : {
        "properties" : {
            "epoch_date" : {
                "type" : "integer",
                "store" : "yes"
            }
        }
    }
}
4

2 に答える 2

4

マッピングが与えられたフィールドでソートするために変更する必要があるものは何もありません。フィールドがインデックス化されている場合にのみ、フィールドを並べ替えることができます。デフォルトは"index":"yes"数値または日付です。analyzed分析するテキストがないため、数値型を に設定することはできません。また、日付には整数ではなく日付型を使用することをお勧めします。

ソート対象のフィールドに固有の用語が多数ある場合、ソートはメモリを消費する可能性があります。十分なメモリがあることを確認してください。また、特定のフィールドでソートすると、検索エンジンの重要な部分である関連性ランキングが失われることに注意してください。

フィールドを保存するかどうかは、並べ替えとは関係ありませんが、検索結果と一緒に返すためにフィールドを取得する方法とは関係ありません。フィールドを使用する場合_source(デフォルトの動作)、特定のフィールドを保存する理由はありません。クエリ時にオプションを使用して特定のフィールドを要求すると、保存されたフィールドは、json を解析するフィールドfieldsから抽出されるのではなく、lucene から直接取得されます。_source

于 2013-05-19T10:40:43.650 に答える
0

An index is used for efficient sorting. So YES, you want to create an index for the field.

As to needing it to be "more efficient", I'd kindly advise you to first check your results and see if they're fast enough. I don't see a reason beforehand (with the limited info you provided) to think it wouldn't be efficient.

If you intend to filter on the field as well (date-ranges?) be sure to use filters instead of queries whenever you feel the filters used will be used often. This because filters can be efficiently cached.

于 2013-05-18T18:35:51.733 に答える