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

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

你如何過濾非空值elasticsearch?

你如何過濾非空值elasticsearch?

斯蒂芬大帝 2023-03-16 09:09:36
我正在嘗試過濾掉不為 null 的值:以sql為例SELECT ALL FROM Mytable WHERE field_1 NOT NULL and field_2 ="alpha"我應該如何在 elasticsearch-dsl(python) 中編寫此查詢?我試過這樣的事情:s = Mytable.search().query(Q('match', field_2 ='alpha')).filter(~Q('missing', field='field_1'))但它返回具有 field_1 空值的元素另外,我試過這個,但沒有用field_name_1 = 'field_2'value_1 = "alpha"field_name_2 = 'field_1'value_2 = " "filter = {     "query": {        "bool": {        "must": [            {            "match": {                field_name_1 : value_1            }            },            {            "bool": {                "should": [                    {                    "bool": {                        "must_not": [                            {                                field_name_2: {                                    "textContent": "*"                                }                            }                        ]                    } }                ]            }            }        ]        }    }    }  
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

我不熟悉 elasticsearch-dsl(python),但以下搜索查詢將為您提供所需的相同搜索結果:


SELECT ALL FROM Mytable WHERE field_1 NOT NULL and field_2 ="alpha"

在以下搜索查詢的幫助下,搜索結果將是name="alpha"ANDcost字段not be null。您可以參考存在的查詢以了解更多信息。


指數數據:


 {  "name": "alpha","item": null }

 {  "name": "beta","item": null  }

 {  "name": "alpha","item": 1    }

 {  "name": "alpha","item": []   }

搜索查詢:


您可以將 bool 查詢與 exists 查詢結合起來,如下所示:


    {

  "query": {

    "bool": {

      "must": [

        {

          "term": {

            "name": "alpha"

          }

        },

        {

          "exists": {

            "field": "item"

          }

        }

      ]

    }

  }

}

搜索結果:


"hits": [

  {

    "_index": "my-index",

    "_type": "_doc",

    "_id": "4",

    "_score": 1.6931472,

    "_source": {

      "name": "alpha",

      "item": 1

    }

  }

]


查看完整回答
反對 回復 2023-03-16
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

你可以試試這個:

s = Mytable.search()
.query(Q('bool', must=[Q('match', field_2='alpha'), Q('exists', field='field_1')]))

這是使用布爾復合查詢的方式


查看完整回答
反對 回復 2023-03-16
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

                query: {

                      bool: {

                        must: [

                          {

                            bool: {

                              must_not: {

                                missing: {

                                  field: 'follower',

                                  existence: true,

                                  null_value: true,

                                },

                              },

                            },

                          },

                          {

                            nested: {

                              path: 'follower',

                              query: {

                                match: {

                                  'follower.id': req.currentUser?.id,

                                },

                              },

                            },

                          },

                        ],

                      },

                    },


查看完整回答
反對 回復 2023-03-16
  • 3 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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