[解決済み] Elasticsearchがフィルタにないフィールドの値で注文する。
質問
フィールドがリクエストのクエリの一部でない場合、フィールド値に従って結果アイテムを並べるクエリを作るのに、誰か助けてくれませんか?私はクエリを持っています。
{
"_source": [
"ico",
"name",
"city",
"status"
],
"sort": {
"_score": "desc",
"status": "asc"
},
"size": 20,
"query": {
"bool": {
"should": [
{
"match": {
"normalized": {
"query": "idona",
"analyzer": "standard",
"boost": 3
}
}
},
{
"term": {
"normalized2": {
"value": "idona",
"boost": 2
}
}
},
{
"match": {
"normalized": "idona"
}
}
]
}
}
}
結果は、フィールドのステータスに従ってアルファベットの昇順でソートされます。ステータスには[active, canceled, old...]のようないくつかの値があり、クエリ内の可能性のあるすべての値に対してブーストのようなものが必要です。例えば、active boost 5, canceled boost 4, old boost 3 ...........................。このようなことは可能でしょうか?ありがとうございます。
どのように解決するのですか?
この場合 スクリプトによるカスタムソート を使用することで、あなたの望むものを実現することができます。
を利用したところです。
match_all
クエリを作成した後、そこにクエリロジックを追加することもできますが、あなたが探しているソリューションは
sort
というセクションがあります。
必ず
status
は
キーワード
タイプ
値によるカスタムソート
POST <your_index_name>/_search
{
"query":{
"match_all":{
}
},
"sort":[
{ "_score": "desc" },
{
"_script":{
"type":"number",
"script":{
"lang":"painless",
"inline":"if(params.scores.containsKey(doc['status'].value)) { return params.scores[doc['status'].value];} return 100000;",
"params":{
"scores":{
"active":5,
"old":4,
"cancelled":3
}
}
},
"order":"desc"
}
}
]
}
上記のクエリで、先に値を
scores
セクションを作成します。例えば、値が
new
という値にしたい場合
2
であれば、スコアは以下のようになります。
{
"scores":{
"active":5,
"old":4,
"cancelled":3,
"new":6
}
}
つまり、基本的にドキュメントは最初に
_score
そして、そのソートされたドキュメントに
スクリプトソート
が実行される。
なお、スクリプトソートは
desc
を表示させたいのだろうと理解しているので、本来は
active
の文書が一番上にあり、その後に他の値が続きます。自由に弄ってみてください。
お役に立てれば幸いです。
関連
-
[解決済み] Elasticsearchがフィルタにないフィールドの値で注文する。
-
[解決済み] 負の整数の基数ソート
-
[解決済み] Map Reduce Programmingにおけるreducerのshufflingとsortingフェーズの目的は何ですか?
-
[解決済み] サイズnとmの2つのソートされた配列をマージする際の時間複雑度
-
[解決済み] Scalaで配列を並べ替えるには?
-
[解決済み] Haskellでは、どのように私はペア(タプル)のリストを並べ替えるために組み込みのsortBy関数を使用することができますか?
-
[解決済み] 構造体の配列を(任意の)フィールド名で単純にソートする最短の方法は何ですか?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] ElasticSearchでソートするためのフィールドのマッピングが見つかりません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Elasticsearchがフィルタにないフィールドの値で注文する。
-
[解決済み] 負の整数の基数ソート
-
[解決済み] Map Reduce Programmingにおけるreducerのshufflingとsortingフェーズの目的は何ですか?
-
[解決済み] サイズnとmの2つのソートされた配列をマージする際の時間複雑度
-
[解決済み] Scalaで配列を並べ替えるには?
-
[解決済み] Haskellでは、どのように私はペア(タプル)のリストを並べ替えるために組み込みのsortBy関数を使用することができますか?
-
[解決済み] 構造体の配列を(任意の)フィールド名で単純にソートする最短の方法は何ですか?
-
[解決済み] ElasticSearchでソートするためのフィールドのマッピングが見つかりません。