forked from elastic/built-docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquery-dsl-regexp-query.html
543 lines (503 loc) · 22.4 KB
/
query-dsl-regexp-query.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Regexp Query | Elasticsearch Guide [1.7] | Elastic</title>
<meta class="elastic" name="content" content="Regexp Query | Elasticsearch Guide [1.7]">
<link rel="home" href="index.html" title="Elasticsearch Guide [1.7]"/>
<link rel="up" href="query-dsl-queries.html" title="Queries"/>
<link rel="prev" href="query-dsl-range-query.html" title="Range Query"/>
<link rel="next" href="query-dsl-span-first-query.html" title="Span First Query"/>
<meta class="elastic" name="product_version" content="1.7"/>
<meta class="elastic" name="product_name" content="Elasticsearch"/>
<meta class="elastic" name="website_area" content="documentation"/>
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/1.7"/>
<meta name="DC.subject" content="Elasticsearch"/>
<meta name="DC.identifier" content="1.7"/>
<meta name="robots" content="noindex,nofollow"/>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.optimizely.com/js/18132920325.js"></script>
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="/manifest.json">
<meta name="apple-mobile-web-app-title" content="Elastic">
<meta name="application-name" content="Elastic">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd" />
<meta name="yandex-verification" content="d8a47e95d0972434" />
<meta name="localized" content="true" />
<meta name="st:robots" content="follow,index" />
<meta property="og:image" content="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt280217a63b82a734/6202d3378b1f312528798412/elastic-logo.svg" />
<meta property="og:image:width" content="500" />
<meta property="og:image:height" content="172" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
<link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
<link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
<!-- Give IE8 a fighting chance -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="/guide/static/styles.css" />
</head>
<!--© 2015-2022 Elasticsearch B.V. -->
<!-- All Elastic documentation is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. -->
<!-- http://creativecommons.org/licenses/by-nc-nd/4.0/ -->
<body>
<!-- Google Tag Manager -->
<script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
<!-- End Google Tag Manager -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-12395217-16');
</script>
<!-- Google Tag Manager for GA4 -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-KNJMG2M');</script>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KNJMG2M" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager for GA4-->
<div id='elastic-nav' style="display:none;"></div>
<script src='https://www.elastic.co/elastic-nav.js'></script>
<div class="main-container">
<section id="content" >
<div class="content-wrapper">
<section id="guide" lang="en">
<div class="container-fluid">
<div class="row pb-3">
<div class="col-12 order-2 col-md-4 order-md-1 col-lg-3 h-almost-full-md sticky-top-md" id="left_col">
<!-- The TOC is appended here -->
</div>
<div class="col-12 order-1 col-md-8 order-md-2 col-lg-7 order-lg-2 guide-section" id="middle_col">
<!-- start body -->
<div class="page_header">
<p>
<strong>WARNING</strong>: Version 1.7 of Elasticsearch has passed its
<a href="https://www.elastic.co/support/eol">EOL date</a>.
</p>
<p>
This documentation is no longer being maintained and may be removed.
If you are running this version, we strongly advise you to upgrade.
For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</p>
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="/guide/">Elastic Docs</a></span>
<span class="chevron-right">›</span><span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [1.7]</a></span>
<span class="chevron-right">›</span><span class="breadcrumb-link"><a href="query-dsl.html">Query DSL</a></span>
<span class="chevron-right">›</span><span class="breadcrumb-link"><a href="query-dsl-queries.html">Queries</a></span>
</div>
<div class="navheader">
<span class="prev">
<a href="query-dsl-range-query.html">« Range Query</a>
</span>
<span class="next">
<a href="query-dsl-span-first-query.html">Span First Query »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title"><a id="query-dsl-regexp-query"></a>Regexp Query<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/1.7/docs/reference/query-dsl/queries/regexp-query.asciidoc">edit</a></h2>
</div></div></div>
<p>The <code class="literal">regexp</code> query allows you to use regular expression term queries.
See <a class="xref" href="query-dsl-regexp-query.html#regexp-syntax" title="Regular expression syntax">Regular expression syntax</a> for details of the supported regular expression language.
The "term queries" in that first sentence means that Elasticsearch will apply
the regexp to the terms produced by the tokenizer for that field, and not
to the original text of the field.</p>
<p><span class="strong strong"><strong>Note</strong></span>: The performance of a <code class="literal">regexp</code> query heavily depends on the
regular expression chosen. Matching everything like <code class="literal">.*</code> is very slow as
well as using lookaround regular expressions. If possible, you should
try to use a long prefix before your regular expression starts. Wildcard
matchers like <code class="literal">.*?+</code> will mostly lower performance.</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
"regexp":{
"name.first": "s.*y"
}
}</pre>
</div>
<p>Boosting is also supported</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
"regexp":{
"name.first":{
"value":"s.*y",
"boost":1.2
}
}
}</pre>
</div>
<p>You can also use special flags</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
"regexp":{
"name.first": {
"value": "s.*y",
"flags" : "INTERSECTION|COMPLEMENT|EMPTY"
}
}
}</pre>
</div>
<p>Possible flags are <code class="literal">ALL</code> (default), <code class="literal">ANYSTRING</code>, <code class="literal">COMPLEMENT</code>,
<code class="literal">EMPTY</code>, <code class="literal">INTERSECTION</code>, <code class="literal">INTERVAL</code>, or <code class="literal">NONE</code>. Please check the
<a href="http://lucene.apache.org/core/4_9_0/core/org/apache/lucene/util/automaton/RegExp.html" class="ulink" target="_top">Lucene
documentation</a> for their meaning</p>
<p>Regular expressions are dangerous because it’s easy to accidentally
create an innocuous looking one that requires an exponential number of
internal determinized automaton states (and corresponding RAM and CPU)
for Lucene to execute. Lucene prevents these using the
<code class="literal">max_determinized_states</code> setting (defaults to 10000). You can raise
this limit to allow more complex regular expressions to execute.</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">{
"regexp":{
"name.first": {
"value": "s.*y",
"flags" : "INTERSECTION|COMPLEMENT|EMPTY",
"max_determinized_states": 20000
}
}
}</pre>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title"><a id="regexp-syntax"></a>Regular expression syntax<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/1.7/docs/reference/query-dsl/queries/regexp-syntax.asciidoc">edit</a></h3>
</div></div></div>
<p>Regular expression queries are supported by the <code class="literal">regexp</code> and the <code class="literal">query_string</code>
queries. The Lucene regular expression engine
is not Perl-compatible but supports a smaller range of operators.</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>We will not attempt to explain regular expressions, but
just explain the supported operators.</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title"><a id="_standard_operators"></a>Standard operators<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/1.7/docs/reference/query-dsl/queries/regexp-syntax.asciidoc">edit</a></h4>
</div></div></div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
Anchoring
</span>
</dt>
<dd>
<p>Most regular expression engines allow you to match any part of a string.
If you want the regexp pattern to start at the beginning of the string or
finish at the end of the string, then you have to <em>anchor</em> it specifically,
using <code class="literal">^</code> to indicate the beginning or <code class="literal">$</code> to indicate the end.</p>
<p>Lucene’s patterns are always anchored. The pattern provided must match
the entire string. For string <code class="literal">"abcde"</code>:</p>
<pre class="literallayout">ab.* # match
abcd # no match</pre>
</dd>
<dt>
<span class="term">
Allowed characters
</span>
</dt>
<dd>
<p>Any Unicode characters may be used in the pattern, but certain characters
are reserved and must be escaped. The standard reserved characters are:</p>
<pre class="literallayout">. ? + * | { } [ ] ( ) " \</pre>
<p>If you enable optional features (see below) then these characters may
also be reserved:</p>
<pre class="literallayout"># @ & < > ~</pre>
<p>Any reserved character can be escaped with a backslash <code class="literal">"\*"</code> including
a literal backslash character: <code class="literal">"\\"</code></p>
<p>Additionally, any characters (except double quotes) are interpreted literally
when surrounded by double quotes:</p>
<pre class="literallayout">john"@smith.com"</pre>
</dd>
<dt>
<span class="term">
Match any character
</span>
</dt>
<dd>
<p>The period <code class="literal">"."</code> can be used to represent any character. For string <code class="literal">"abcde"</code>:</p>
<pre class="literallayout">ab... # match
a.c.e # match</pre>
</dd>
<dt>
<span class="term">
One-or-more
</span>
</dt>
<dd>
<p>The plus sign <code class="literal">"+"</code> can be used to repeat the preceding shortest pattern
once or more times. For string <code class="literal">"aaabbb"</code>:</p>
<pre class="literallayout">a+b+ # match
aa+bb+ # match
a+.+ # match
aa+bbb+ # match</pre>
</dd>
<dt>
<span class="term">
Zero-or-more
</span>
</dt>
<dd>
<p>The asterisk <code class="literal">"*"</code> can be used to match the preceding shortest pattern
zero-or-more times. For string <code class="literal">"aaabbb</code>":</p>
<pre class="literallayout">a*b* # match
a*b*c* # match
.*bbb.* # match
aaa*bbb* # match</pre>
</dd>
<dt>
<span class="term">
Zero-or-one
</span>
</dt>
<dd>
<p>The question mark <code class="literal">"?"</code> makes the preceding shortest pattern optional. It
matches zero or one times. For string <code class="literal">"aaabbb"</code>:</p>
<pre class="literallayout">aaa?bbb? # match
aaaa?bbbb? # match
.....?.? # match
aa?bb? # no match</pre>
</dd>
<dt>
<span class="term">
Min-to-max
</span>
</dt>
<dd>
<p>Curly brackets <code class="literal">"{}"</code> can be used to specify a minimum and (optionally)
a maximum number of times the preceding shortest pattern can repeat. The
allowed forms are:</p>
<pre class="literallayout">{5} # repeat exactly 5 times
{2,5} # repeat at least twice and at most 5 times
{2,} # repeat at least twice</pre>
<p>For string <code class="literal">"aaabbb"</code>:</p>
<pre class="literallayout">a{3}b{3} # match
a{2,4}b{2,4} # match
a{2,}b{2,} # match
.{3}.{3} # match
a{4}b{4} # no match
a{4,6}b{4,6} # no match
a{4,}b{4,} # no match</pre>
</dd>
<dt>
<span class="term">
Grouping
</span>
</dt>
<dd>
<p>Parentheses <code class="literal">"()"</code> can be used to form sub-patterns. The quantity operators
listed above operate on the shortest previous pattern, which can be a group.
For string <code class="literal">"ababab"</code>:</p>
<pre class="literallayout">(ab)+ # match
ab(ab)+ # match
(..)+ # match
(...)+ # no match
(ab)* # match
abab(ab)? # match
ab(ab)? # no match
(ab){3} # match
(ab){1,2} # no match</pre>
</dd>
<dt>
<span class="term">
Alternation
</span>
</dt>
<dd>
<p>The pipe symbol <code class="literal">"|"</code> acts as an OR operator. The match will succeed if
the pattern on either the left-hand side OR the right-hand side matches.
The alternation applies to the <em>longest pattern</em>, not the shortest.
For string <code class="literal">"aabb"</code>:</p>
<pre class="literallayout">aabb|bbaa # match
aacc|bb # no match
aa(cc|bb) # match
a+|b+ # no match
a+b+|b+a+ # match
a+(b|c)+ # match</pre>
</dd>
<dt>
<span class="term">
Character classes
</span>
</dt>
<dd>
<p>Ranges of potential characters may be represented as character classes
by enclosing them in square brackets <code class="literal">"[]"</code>. A leading <code class="literal">^</code>
negates the character class. The allowed forms are:</p>
<pre class="literallayout">[abc] # 'a' or 'b' or 'c'
[a-c] # 'a' or 'b' or 'c'
[-abc] # '-' or 'a' or 'b' or 'c'
[abc\-] # '-' or 'a' or 'b' or 'c'
[^abc] # any character except 'a' or 'b' or 'c'
[^a-c] # any character except 'a' or 'b' or 'c'
[^-abc] # any character except '-' or 'a' or 'b' or 'c'
[^abc\-] # any character except '-' or 'a' or 'b' or 'c'</pre>
<p>Note that the dash <code class="literal">"-"</code> indicates a range of characeters, unless it is
the first character or if it is escaped with a backslash.</p>
<p>For string <code class="literal">"abcd"</code>:</p>
<pre class="literallayout">ab[cd]+ # match
[a-d]+ # match
[^a-d]+ # no match</pre>
</dd>
</dl>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title"><a id="_optional_operators"></a>Optional operators<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/1.7/docs/reference/query-dsl/queries/regexp-syntax.asciidoc">edit</a></h4>
</div></div></div>
<p>These operators are available by default as the <code class="literal">flags</code> parameter defaults to <code class="literal">ALL</code>.
Different flag combinations (concatened with <code class="literal">"\"</code>) can be used to enable/disable
specific operators:</p>
<pre class="literallayout">{
"regexp": {
"username": {
"value": "john~athon<1-5>",
"flags": "COMPLEMENT|INTERVAL"
}
}
}</pre>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
Complement
</span>
</dt>
<dd>
<p>The complement is probably the most useful option. The shortest pattern that
follows a tilde <code class="literal">"~"</code> is negated. For the string <code class="literal">"abcdef"</code>:</p>
<pre class="literallayout">ab~df # match
ab~cf # no match
a~(cd)f # match
a~(bc)f # no match</pre>
<p>Enabled with the <code class="literal">COMPLEMENT</code> or <code class="literal">ALL</code> flags.</p>
</dd>
<dt>
<span class="term">
Interval
</span>
</dt>
<dd>
<p>The interval option enables the use of numeric ranges, enclosed by angle
brackets <code class="literal">"<>"</code>. For string: <code class="literal">"foo80"</code>:</p>
<pre class="literallayout">foo<1-100> # match
foo<01-100> # match
foo<001-100> # no match</pre>
<p>Enabled with the <code class="literal">INTERVAL</code> or <code class="literal">ALL</code> flags.</p>
</dd>
<dt>
<span class="term">
Intersection
</span>
</dt>
<dd>
<p>The ampersand <code class="literal">"&"</code> joins two patterns in a way that both of them have to
match. For string <code class="literal">"aaabbb"</code>:</p>
<pre class="literallayout">aaa.+&.+bbb # match
aaa&bbb # no match</pre>
<p>Using this feature usually means that you should rewrite your regular
expression.</p>
<p>Enabled with the <code class="literal">INTERSECTION</code> or <code class="literal">ALL</code> flags.</p>
</dd>
<dt>
<span class="term">
Any string
</span>
</dt>
<dd>
<p>The at sign <code class="literal">"@"</code> matches any string in its entirety. This could be combined
with the intersection and complement above to express “everything except”.
For instance:</p>
<pre class="literallayout">@&~(foo.+) # anything except string beginning with "foo"</pre>
<p>Enabled with the <code class="literal">ANYSTRING</code> or <code class="literal">ALL</code> flags.</p>
</dd>
</dl>
</div>
</div>
</div>
</div>
<div class="navfooter">
<span class="prev">
<a href="query-dsl-range-query.html">« Range Query</a>
</span>
<span class="next">
<a href="query-dsl-span-first-query.html">Span First Query »</a>
</span>
</div>
</div>
<!-- end body -->
</div>
<div class="col-12 order-3 col-lg-2 order-lg-3 h-almost-full-lg sticky-top-lg" id="right_col">
<div id="sticky_content">
<!-- The OTP is appended here -->
<div class="row">
<div class="col-0 col-md-4 col-lg-0" id="bottom_left_col"></div>
<div class="col-12 col-md-8 col-lg-12">
<div id="rtpcontainer">
<div class="mktg-promo" id="most-popular">
<p class="aside-heading">Most Popular</p>
<div class="pb-2">
<p class="media-type">Video</p>
<a href="https://www.elastic.co/webinars/getting-started-elasticsearch?page=docs&placement=top-video">
<p class="mb-0">Get Started with Elasticsearch</p>
</a>
</div>
<div class="pb-2">
<p class="media-type">Video</p>
<a href="https://www.elastic.co/webinars/getting-started-kibana?page=docs&placement=top-video">
<p class="mb-0">Intro to Kibana</p>
</a>
</div>
<div class="pb-2">
<p class="media-type">Video</p>
<a href="https://www.elastic.co/webinars/introduction-elk-stack?page=docs&placement=top-video">
<p class="mb-0">ELK for Logs & Metrics</p>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div id='elastic-footer'></div>
<script src='https://www.elastic.co/elastic-footer.js'></script>
<!-- Footer Section end-->
</section>
</div>
<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
window.initial_state = {}</script>
</body>
</html>