\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{kg\_929} \pdfinfo{ /Title (es-cheat-sheet.pdf) /Creator (Cheatography) /Author (kg\_929) /Subject (ES Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{ES Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{kg\_929} via \textcolor{DarkBackground}{\uline{cheatography.com/186023/cs/38885/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}kg\_929 \\ \uline{cheatography.com/kg-929} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 24th May, 2023.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{term \seqsplit{不分词,匹配keyword类型}}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query":\{ \newline "term": \{ \newline "address": \{ \newline "value": "重庆" \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{query\_string 组合关键字}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query":\{ \newline "query\_string":\{ \newline "query": "张三 OR 李四" \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{wildcard 通配符查询}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{GET twitter/\_search \newline \{ \newline "query": \{ \newline "wildcard": \{ \newline "city.keyword": \{ \newline "value": "*海" \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{fuzzy 模糊查询}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query":\{ \newline "fuzzy":\{ \newline "address":\{ \newline "value": "白云山", \newline "fuzziness": 1 \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{- \seqsplit{允许不完全匹配,比如错别字,多字,少字} \newline - \seqsplit{fuzziness:设置误差范围,允许0-2之间}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{ids \seqsplit{单个索引,匹配多个id}}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /twitter/\_search \newline \{ \newline "query":\{ \newline "ids":\{ \newline "values":{[}1, 2{]} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{multi\_match 匹配多个字段}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query":\{ \newline "multi\_match":\{ \newline "query":"重庆", \newline "fields":{[}"address", "name"{]} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{match \seqsplit{拆词,匹配后按分数排序}}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query":\{ \newline "match": \{ \newline "address": "重庆市南岸区", \newline "operator": "and" \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{- \seqsplit{先对关键字进行分词,然后按分词进行查询} \newline - \seqsplit{按匹配度从大到小排序} \newline - \seqsplit{分词之前默认匹配关系为or}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{simple\_query\_string 简单版组合关键字}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query":\{ \newline "simple\_query\_string":\{ \newline "query": "张三 + 李四" \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{range 范围查询}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{GET twitter/\_search \newline \{ \newline "query": \{ \newline "range": \{ \newline "age": \{ \newline "gte": 30, \newline "lte": 40 \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{match\_phrase 严格匹配}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /es\_db/\_search \newline \{ \newline "query": \{ \newline "match\_phrase":\{ \newline "address": "广州白云山" \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{根据id批量查询 \seqsplit{(同时搜索多个索引)}}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get \_mget \newline \{ \newline "docs":{[} \newline \{"\_index":"es\_db", "\_id":3\}, \newline \{"\_index":"article", "\_id":1\} \newline {]} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{\_msearch 同时搜索多个索引}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{get /\_msearch \newline \{"index":"es\_db"\} \newline \{"query":\{"match\_all":\{\}\}, "from":0, "size": 2\} \newline \{"index":"article"\} \newline \{"query":\{"match":\{"title":"fox"\}\}\}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{0.84609 cm} x{4.13091 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{复合查询}} \tn % Row 0 \SetRowColor{LightBackground} must & \seqsplit{子句必须在文档中匹配。} \seqsplit{正匹配有助于提高相关性分数。} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \seqsplit{should} & \seqsplit{不强制要求必须匹配。} \seqsplit{但是,如果匹配,相关性得分就会提高。} \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} \seqsplit{must\_not} & \seqsplit{条件不得与文档匹配。} \seqsplit{该子句不会对分数做出贡献(它在过滤上下文执行上下文中运行)} \tn % Row Count 10 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{filter} & \seqsplit{条件必须与文档匹配,类似于} must 子句。 \seqsplit{该子句不会对分数做出贡献} \seqsplit{(它在过滤上下文执行上下文中运行)} \tn % Row Count 15 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{bool 组合查询}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{POST \_search \newline \{ \newline "query": \{ \newline "bool" : \{ \newline "must" : \{ \newline "term" : \{ "user" : "kimchy" \} \newline \}, \newline "filter": \{ \newline "term" : \{ "tag" : "tech" \} \newline \}, \newline "must\_not" : \{ \newline "range" : \{ \newline "age" : \{ "gte" : 10, "lte" : 20 \} \newline \} \newline \}, \newline "should" : {[} \newline \{ "term" : \{ "tag" : "wow" \} \}, \newline \{ "term" : \{ "tag" : "elasticsearch" \} \} \newline {]}, \newline "minimum\_should\_match" : 1, \newline "boost" : 1.0 \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.29402 cm} x{3.68298 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{聚合}} \tn % Row 0 \SetRowColor{LightBackground} terms & 指定分组字段 \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} range & \seqsplit{指定边界值进行分组,可以按数字,按日期} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \seqsplit{date\_histogram} & 按时间频率分组 \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} filter & 指定过滤条件分组 \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{terms 按字段分组}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{GET twitter/\_search \newline \{ \newline "size": 0, \newline "aggs": \{ \newline "city": \{ \newline "terms": \{ \newline "field": "city", \newline "size": 10 \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{\seqsplit{多个filter分组统计,按filter分组}}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{GET twitter/\_search \newline \{ \newline "size": 0, \newline "aggs": \{ \newline "by\_cities": \{ \newline "filters": \{ \newline "filters": \{ \newline "beijing": \{ \newline "match": \{ \newline "city": "北京" \newline \} \newline \}, \newline "shanghai": \{ \newline "match": \{ \newline "city": "上海" \newline \} \newline \} \newline \} \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{range \seqsplit{按给定边界值进行分组}}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{GET twitter/\_search \newline \{ \newline "size": 0, \newline "aggs": \{ \newline "age": \{ \newline "range": \{ \newline "field": "age", \newline "ranges": {[} \newline \{ \newline "from": 20, \newline "to": 22 \newline \}, \newline ... \newline {]} \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{cardinality 去重统计}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{GET twitter/\_search \newline \{ \newline "size": 0, \newline "aggs": \{ \newline "number\_of\_cities": \{ \newline "cardinality": \{ \newline "field": "city" \newline \} \newline \} \newline \} \newline \}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}