使用elasticsearch儲存訂單的主要資訊,document內的field,基本上是long或keyword,建立索引的order.json檔案如下:
,
"status": ,
"createtime": ,
"uid": ,
"payment": ,
"commentstatus": ,
"refundstatus":
} }
}
某天發現有個查詢功能(單獨使用payment欄位查詢)沒有資料出來,最近未修改此部分**。對比研發環境,研發環境是正常的,同樣的**在測試環境下無資料返回。
querybuilders.termquery("payment", req.getfilter().getorder().getpayment())
在kibana上用命令診斷查詢資料,同樣沒有結果返回,查詢命令如下:
get /order/doc/_search
} ]
}}}
響應返回(只展示payment欄位):
}}
}}
}}}
text與keyword的區別
keyword對儲存的內容不分詞,也不改變大小寫,原樣儲存,預設可索引。
text對內容進行分詞,並且全部小寫儲存,同時會增加乙個text.keyword欄位,為keyword型別,超過256字元後不索引。
由於payment欄位變成text了,原有的程式使用term查詢,用的"alipay",而text儲存的是"alipay",所以查不到資料了。
嘗試排錯方法
get /order/doc/_search
} ]
}}}
get /order/doc/_search}]
}}}
查詢有資料輸出,並且符合預期,嘗試方法有效。
明明order.json的對payment欄位定義的型別是keyword,怎麼變成text了?
1.刪除索引
delete /order
2.按照order.json重建索引
put /order
, "status": ,
"createtime": ,
"uid": ,
"payment": ,
"commentstatus": ,
"refundstatus": }}
}}
3.觸發程式灌資料(也可以用bulk) 記一次生產ORACLE資料庫突然查詢變慢
資料庫 oracle 有乙個流水表,表資料量千萬級,乙個管理臺常用條件分頁查詢突然變慢,有日期條件且有索引。部署伺服器是多台,資料庫查詢操作使用hibernate框架。逐台伺服器sql日誌跟蹤排查,根據hibernate發出sql語句,在oracle資料庫檢查對應的執行計畫,使用檢視 v sql 獲...
記一次sql查詢
效果圖 要查詢出如上圖的效果 知識點.1.多表巢狀查詢.2.輸出查詢結果,group concat函式 3.關聯查詢 select t1.學校,case when t1.年級 2017 then 1年級 when t1.年級 2016 then 2年級 when t1.年級 2015 then 3年...
記一次複雜查詢
專案中有乙個需求,查出使用者取出,充值次數,金額,使用者名稱,金幣的總量和每局遊戲的盈虧等做乙個統計,而他們分布在個表中,分別是使用者表,使用者取出表,使用者充值表,每局遊戲表中。首先想到的就是要分組查詢,group by user.userid.因為有的使用者有充值記錄但不一定有取出記錄,所以需要...