亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Elasticsearch.net - 范圍查詢

Elasticsearch.net - 范圍查詢

C#
紅顏莎娜 2022-06-19 16:46:19
我正在嘗試通過Elasticsearch.net(不是 NEST)從 C# 查詢 Elasticsearch 索引。具體來說,我需要獲取自特定日期以來創建的所有具有“成功”狀態的文檔。為了做到這一點,我有:var query = new {  query = new {    match = new {      field="status",      query="success"    }  },  range = new {    ?  }};我不確定該range部分使用什么。事實上,我什至不確定我的語法query是否正確。我真的不明白 C# 語法如何映射到 Elasticsearch 中的查詢 DSL。任何幫助表示贊賞。
查看完整描述

3 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

這樣的事情應該做:


var query = new {

  bool = new {

    must = new {

      match = new {

        field = "status",

        query = "success"

      }

    },

    filter = new {

      range = new {

        createDate = new {

          gt = "2018-12-01T00:00:00.000Z"

        }

      }

    }

  }

};


查看完整回答
反對 回復 2022-06-19
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

我真的不明白 C# 語法如何映射到 Elasticsearch 中的查詢 DSL。


通過查看提供的示例,我假設您想使用PosData.Serializable(query). 在這種情況下,查詢對象(無論它是什么類型)將被 JSON 序列化并發布到 elasticsearch 集群,無需任何修改。當您使用new {}C# 語法創建對象時,默認情況下將其序列化為 JSON,并使用與該對象的屬性相同的鍵。也就是說,對象


new {

    query = new {

        bool = new {

            must = new {

                term = new {

                    status = "success"

                }

            },

            filter = new {

                range = new {

                    date = new { gte = "2018-12-22T00:00:00.000Z" }

                }

            }

        }

    }

}

將被序列化并傳遞給elasticsearch


"query": {

    "bool": {

        "must": {

            "term": {

                  "status": "success"

            }

        },

        "filter": {

            "range": {

               "date": { "gte": "2018-12-22T00:00:00.000Z" }

            }

        }

    }

}

因此,通過使用低級 Elasticsearch 客戶端,您可以創建幾乎 1:1 映射到查詢 DSL 語法的對象。您可以從 elastic.co 復制示例,將“:”替換為“= new”,從屬性名稱中刪除引號,基本上就是這樣。


查看完整回答
反對 回復 2022-06-19
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

查詢將類似于:


var query = new {

  bool = new {

    must = new {

      match = new {

        field = "status",

        query = "success"

      }

    },

    filter = new {

      range = new {

        createDate = new {

          gte = "2018-01-01T00:00:00.000Z",

          lt = "2019-01-01T00:00:00.000Z"

        }

      }

    }

  }

};


查看完整回答
反對 回復 2022-06-19
  • 3 回答
  • 0 關注
  • 234 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號