Three things can be explained in elasticsearch:
Explain for each hit how its score was computed (Docs: Explain)
GET //_search?explain
Three things can be explained in elasticsearch:
GET //_search?explain
@echo off | |
set PLINK_PATH=C:\Program Files (x86)\PuTTY\plink.exe | |
set WIRESHARK_PATH=C:\Program Files\Wireshark\Wireshark.exe | |
if "%1" == "" goto :usage | |
"%PLINK_PATH%" -ssh %1 "tcpdump -ni %2 -s 0 -w - not port 22" | "%WIRESHARK_PATH%" -k -i - | |
goto :end |
To help you with the process of converting a MySQL app to PostgreSQL, I collected a list of differences between MySQL and PostgreSQL (PG). | |
Important changes: | |
* Strings are quoted with '...' or with $token$...$token$. Single-quotes are escaped with single-quotes. | |
* Identifiers are folded to lowercase, unless they are quoted with "..." which makes them case-sensitive | |
* The max identifier length is 63 | |
* There are some system columns that cannot be used as an identifier (probably not a problem) | |
* Expressions are evaluated in arbitrary order, so WHERE x > 0 AND y/x > 1.5 can lead to a division by zero and has to be replaced with WHERE CASE WHEN y > 0 THEN y/x > 1.5 ELSE FALSE END | |
* SELECT CASE WHEN x > 0 THEN x ELSE 1/0 END would still lead to a division by zero because the constant 1/0 is evaluated even before the query starts |
DROP TABLE IF EXISTS public.with_enum; | |
DROP TABLE IF EXISTS public.with_text; | |
DROP TYPE IF EXISTS my_enum; | |
CREATE TYPE public.my_enum AS ENUM ('axyzxyz', 'bxyzxyz', 'cxyzxyz', 'dxyzxyz'); | |
CREATE TABLE public.with_enum ( | |
id serial NOT NULL PRIMARY KEY, | |
blah integer, | |
thecolumn my_enum |
// Initialize an empty image | |
dest := image.NewRGBA(image.Rect(0, 0, 800, 300)) | |
// Draw a white background | |
draw.Draw(dest, dest.Bounds(), &image.Uniform{color.White}, image.ZP, draw.Src) | |
// Read the font | |
fontBytes, err := ioutil.ReadFile(exeDir + "/DejaVuSans.ttf") | |
if err != nil { |
func handleRequest(w http.ResponseWriter, r *http.Request) { | |
cn := w.(http.CloseNotifier) | |
cc := cn.CloseNotify() | |
go func() { | |
<-cc | |
log.Println("Closed!") | |
}() |
package main | |
import ( | |
agwd "github.com/sclevine/agouti" | |
tbwd "github.com/tebeka/selenium" | |
"log" | |
sgwd "sourcegraph.com/sourcegraph/go-selenium" | |
) | |
// Helper for sourcegraph/go-selenium |
// (I prefer "Two channels wrapped" and "Anonymous struct" over the other two) | |
// Two channels | |
resultCh := make(chan Result) | |
errorCh := make(chan Result) | |
go func(resultCh chan Result, errorCh chan errpr) { | |
errorCh <- errors.New("Does not compute")} | |
resultCh <- result | |
}(resultCh, errorCh) |
package main | |
// Trigger ensures a worker runs once after it has been triggered, no matter how many trigger events happened during | |
// its last run. | |
// | |
// Usage: | |
// trigger := NewTrigger() | |
// go func() { | |
// for _ = range trigger { | |
// do_work() |
// While the Go documentation promotes the context package for keeping track of request context and cancelation, to | |
// actually use it for canceling work in http requests some plumbing is necessary: | |
// getCancelableContextFromResponseWriter gets a context.Context that is canceled when the client (browser) closes the connection | |
func getCancelableContextFromResponseWriter(w http.ResponseWriter) context.Context { | |
// Create a context that can be handed down to the workers to relay cancellation | |
ctx, cancelContext := context.WithCancel(context.Background()) | |
// Get a channel that receives a value when the request is canceled |