添加链接
注册
登录
link管理
链接快照平台
输入网页链接,自动生成快照
标签化管理网页链接
相关文章推荐
暴躁的机器猫
·
VS运行调试:当前无法命中断点,还没有为该文 ...
·
1 月前
·
旅途中的手套
·
游戏特快
·
3 月前
·
想出国的碗
·
14.1. csv — CSV 文件读写 ...
·
7 月前
·
活泼的企鹅
·
使用复选框将粘贴转到目标范围使用Google ...
·
1 年前
·
热心的钥匙扣
·
浅草小子/浅草キッド日剧剧情介绍第1-全集, ...
·
1 年前
·
link管理
›
Data Visualization with ElasticSearch and Protovis | Elastic Blog
https://www.elastic.co/blog/data-visualization-with-elasticsearch-and-protovis
开心的苦咖啡
3 月前
</noscript><div id="__next" data-reactroot=""><div class="progress-container"><div class="progress-bar" id="myBar"/></div><div class="skip-links"><style data-emotion="css bivm3i-euiSkipLink-euiScreenReaderOnly">.css-bivm3i-euiSkipLink-euiScreenReaderOnly{-webkit-transition:none!important;transition:none!important;}.css-bivm3i-euiSkipLink-euiScreenReaderOnly:focus{-webkit-animation:none!important;animation:none!important;}.css-bivm3i-euiSkipLink-euiScreenReaderOnly:not(:focus):not(:active):not(:focus-within){inset-block-start:auto;inset-inline-start:-10000px;inline-size:1px;block-size:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;margin:-1px;}</style><style data-emotion="css 1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly">.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly{color:#FFF;background-color:#07C;outline-color:#000;-webkit-transition:none!important;transition:none!important;}@media screen and (prefers-reduced-motion: no-preference){.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly{-webkit-transition:-webkit-transform 250ms ease-in-out,background-color 250ms ease-in-out;transition:transform 250ms ease-in-out,background-color 250ms ease-in-out;}.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly:hover:not(:disabled){-webkit-transform:translateY(-1px);-moz-transform:translateY(-1px);-ms-transform:translateY(-1px);transform:translateY(-1px);}.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly:focus{-webkit-animation:euiButtonActive 250ms cubic-bezier(.34, 1.61, .7, 1);animation:euiButtonActive 250ms cubic-bezier(.34, 1.61, .7, 1);}.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly:active:not(:disabled){-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}}.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly:focus{-webkit-animation:none!important;animation:none!important;}.css-1ya6sd9-fill-primary-euiSkipLink-euiScreenReaderOnly:not(:focus):not(:active):not(:focus-within){inset-block-start:auto;inset-inline-start:-10000px;inline-size:1px;block-size:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;margin:-1px;}</style><style data-emotion="css 1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly">.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly{display:inline-block;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;cursor:pointer;white-space:nowrap;max-inline-size:100%;vertical-align:middle;font-weight:500;padding:0 12px;block-size:32px;line-height:32px;font-size:1.0000rem;line-height:1.4286rem;min-inline-size:112px;border-radius:4px;color:#FFF;background-color:#07C;outline-color:#000;-webkit-transition:none!important;transition:none!important;}.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:hover:not(:disabled),.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:focus{-webkit-text-decoration:underline;text-decoration:underline;}@media screen and (prefers-reduced-motion: no-preference){.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly{-webkit-transition:-webkit-transform 250ms ease-in-out,background-color 250ms ease-in-out;transition:transform 250ms ease-in-out,background-color 250ms ease-in-out;}.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:hover:not(:disabled){-webkit-transform:translateY(-1px);-moz-transform:translateY(-1px);-ms-transform:translateY(-1px);transform:translateY(-1px);}.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:focus{-webkit-animation:euiButtonActive 250ms cubic-bezier(.34, 1.61, .7, 1);animation:euiButtonActive 250ms cubic-bezier(.34, 1.61, .7, 1);}.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:active:not(:disabled){-webkit-transform:translateY(1px);-moz-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);}}.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:focus{-webkit-animation:none!important;animation:none!important;}.css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly:not(:focus):not(:active):not(:focus-within){inset-block-start:auto;inset-inline-start:-10000px;inline-size:1px;block-size:1px;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden;margin:-1px;}</style><a href="#main-content" rel="noreferrer" class="euiSkipLink css-1vo6hom-euiButtonDisplay-s-defaultMinWidth-s-fill-primary-euiSkipLink-euiScreenReaderOnly"><style data-emotion="css 1km4ln8-euiButtonDisplayContent">.css-1km4ln8-euiButtonDisplayContent{block-size:100%;inline-size:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle;gap:8px;}</style><span class="css-1km4ln8-euiButtonDisplayContent"><span class="eui-textTruncate">Skip to main content</span></span></a></div><header class="primary header-wrapper"><div data-component-theme="" class="Index_navigation__kp9_7" id="navigation_container"><div class="Index_navigation_container__AMYLs"><div data-component-theme="" class="Index_navigation_header__KYvRr"><a href="/" class="jsx-1189744782 elastic-logo"><span class="jsx-1189744782 sr-only">Elastic</span><svg width="117" height="40" viewbox="0 0 117 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1189744782"><g class="jsx-1189744782"><path d="M40.1527 20.9588C40.1527 17.5986 38.0653 14.6457 34.9257 13.5087C35.0615 12.7959 35.1294 12.0831 35.1294 11.3534C35.1294 5.09121 30.0382 -1.52588e-05 23.793 -1.52588e-05C20.1273 -1.52588e-05 16.7331 1.74797 14.5948 4.70088C13.5426 3.88628 12.2529 3.44505 10.9122 3.44505C7.58591 3.44505 4.88757 6.14339 4.88757 9.46965C4.88757 10.1994 5.02333 10.9122 5.26092 11.574C2.13831 12.6941 0 15.6979 0 19.0411C0 22.4183 2.10437 25.3712 5.24395 26.5083C5.10819 27.2041 5.0403 27.9338 5.0403 28.6635C5.0403 34.9088 10.1146 39.983 16.3598 39.983C20.0255 39.983 23.4196 38.2181 25.5409 35.2651C26.5931 36.0967 27.8829 36.5549 29.2236 36.5549C32.5498 36.5549 35.2482 33.8566 35.2482 30.5303C35.2482 29.8006 35.1124 29.0878 34.8748 28.4259C37.9974 27.3059 40.1527 24.3021 40.1527 20.9588Z" fill="white" class="jsx-1189744782"/><path d="M15.7824 17.2253L24.5732 21.2304L33.432 13.4578C33.5677 12.8129 33.6186 12.185 33.6186 11.5061C33.6186 6.04156 29.1723 1.59523 23.7077 1.59523C20.4324 1.59523 17.3946 3.20745 15.5448 5.9058L14.0684 13.5596L15.7824 17.2253Z" fill="#FED10A" class="jsx-1189744782"/><path d="M6.68665 26.5253C6.55088 27.1702 6.49997 27.832 6.49997 28.5108C6.49997 33.9924 10.9633 38.4387 16.4448 38.4387C19.7371 38.4387 22.8088 36.8095 24.6587 34.0942L26.1181 26.4744L24.1665 22.7408L15.3417 18.7187L6.68665 26.5253Z" fill="#24BBB1" class="jsx-1189744782"/><path d="M6.63518 11.3195L12.6598 12.745L13.9835 5.90583C13.1689 5.27791 12.1507 4.93849 11.0985 4.93849C8.48499 4.93849 6.34668 7.05983 6.34668 9.69029C6.34668 10.2503 6.4485 10.8104 6.63518 11.3195Z" fill="#EF5098" class="jsx-1189744782"/><path d="M6.10983 12.762C3.42846 13.6444 1.54471 16.224 1.54471 19.0581C1.54471 21.8243 3.25875 24.2851 5.82133 25.2694L14.2728 17.6326L12.7284 14.3233L6.10983 12.762Z" fill="#1BA9F5" class="jsx-1189744782"/><path d="M26.186 34.0942C27.0176 34.7221 28.0189 35.0785 29.0541 35.0785C31.6676 35.0785 33.8059 32.9571 33.8059 30.3267C33.8059 29.7497 33.7041 29.1896 33.5174 28.6805L27.5098 27.2719L26.186 34.0942Z" fill="#93C83E" class="jsx-1189744782"/><path d="M27.4075 25.6937L34.0261 27.238C36.7245 26.3555 38.5912 23.776 38.5912 20.9249C38.5912 18.1757 36.8772 15.6979 34.3146 14.7306L25.6595 22.3165L27.4075 25.6937Z" fill="#0077CC" class="jsx-1189744782"/><path fill-rule="evenodd" clip-rule="evenodd" d="M60.3483 29.8175V9.96179H62.4187V29.8175H60.3483ZM56.1393 28.0865L56.937 28.0017L56.9879 29.6309C54.8835 29.9194 53.0846 30.0721 51.5912 30.0721C49.6056 30.0721 48.197 29.4951 47.3655 28.3411C46.5339 27.1871 46.1266 25.3882 46.1266 22.9614C46.1266 18.1077 48.0613 15.6809 51.9136 15.6809C53.7804 15.6809 55.172 16.207 56.0884 17.2422C57.0048 18.2775 57.463 19.9236 57.463 22.1468L57.3443 23.7251H48.214C48.214 25.2524 48.4855 26.3895 49.0456 27.1192C49.6056 27.8489 50.556 28.2223 51.9306 28.2223C53.3222 28.2562 54.7138 28.2053 56.1393 28.0865ZM55.3926 22.0959C55.3926 20.3988 55.1211 19.1939 54.578 18.4981C54.035 17.8023 53.1525 17.4459 51.9306 17.4459C50.7087 17.4459 49.7753 17.8192 49.1644 18.549C48.5534 19.2787 48.231 20.4667 48.214 22.0959H55.3926ZM75.5031 26.9665V20.1612C75.5031 18.6338 75.1468 17.4968 74.417 16.784C73.7042 16.0543 72.5672 15.6979 71.0059 15.6979H65.6941V17.5307H71.1417C71.8375 17.5307 72.3975 17.7344 72.8048 18.1417C73.2121 18.549 73.4157 19.2278 73.4157 20.1612V21.3491L69.0712 21.7564C67.6117 21.8922 66.5426 22.2995 65.8638 22.9274C65.1849 23.5553 64.8455 24.5566 64.8455 25.8973C64.8455 27.255 65.1849 28.2902 65.8468 29.0029C66.5087 29.7327 67.476 30.0891 68.7488 30.0891C70.4119 30.0891 72.0581 29.7836 73.7212 29.0539C74.3557 29.6588 75.3493 29.648 76.5572 29.6349H76.5574H76.5576H76.5579C76.7391 29.6329 76.925 29.6309 77.1154 29.6309L77.2172 27.798C77.2172 27.798 75.5031 27.6623 75.5031 26.9665ZM69.0882 28.3411C67.6796 28.3411 66.9838 27.4925 66.9838 25.7955C66.9838 25.0318 67.1535 24.4378 67.5269 24.0305C67.9002 23.6232 68.4942 23.3856 69.3258 23.3178L73.4157 22.9274V27.4925L72.7878 27.7132C71.5829 28.1374 70.344 28.3411 69.0882 28.3411ZM83.5982 17.5477C81.5956 17.5477 80.5774 18.2435 80.5774 19.6521C80.5774 20.297 80.815 20.7552 81.2732 21.0267C81.7314 21.2983 82.7836 21.5698 84.4297 21.8583C86.0759 22.1468 87.2299 22.5371 87.9088 23.0632C88.5876 23.5724 88.927 24.5397 88.927 25.9652C88.927 27.3908 88.4688 28.426 87.5524 29.0878C86.6359 29.7497 85.3122 30.0891 83.5473 30.0891C82.4102 30.0891 78.5918 29.6648 78.5918 29.6648L78.7106 27.8659C79.0533 27.8978 79.3815 27.9289 79.6954 27.9586C81.3864 28.1186 82.6624 28.2393 83.5642 28.2393C84.6334 28.2393 85.448 28.0696 86.008 27.7302C86.5681 27.3908 86.8566 26.8138 86.8566 26.0161C86.8566 25.2185 86.619 24.6754 86.1438 24.3869C85.6686 24.0984 84.6164 23.8269 82.9872 23.5724C81.358 23.3178 80.204 22.9444 79.5252 22.4353C78.8463 21.9432 78.5069 21.0098 78.5069 19.6691C78.5069 18.3284 78.9821 17.3271 79.9325 16.6822C80.8828 16.0374 82.0708 15.7149 83.4794 15.7149C84.5994 15.7149 88.5027 16.0034 88.5027 16.0034V17.8193C87.8189 17.7797 87.1764 17.7364 86.5804 17.6962C85.3867 17.6157 84.3792 17.5477 83.5982 17.5477ZM94.5436 17.7853H98.939V15.9694H94.5436V11.7437H92.4901V15.9864H90.5215V17.7853H92.4901V25.0657C92.4901 27.0344 92.7617 28.375 93.3217 29.0708C93.8817 29.7666 94.866 30.123 96.3085 30.123C96.9534 30.123 97.8868 30.0212 99.1257 29.8176L98.9899 28.1035L96.5291 28.2732C95.6636 28.2732 95.1206 28.0187 94.883 27.5265C94.6624 27.0344 94.5436 25.9822 94.5436 24.4039V17.7853ZM101.824 12.8469V10.454H103.895V12.8638L101.824 12.8469ZM101.824 29.8176V15.9864H103.895V29.8176H101.824ZM115.995 16.0373C114.535 15.8167 113.5 15.6979 112.889 15.6979C110.819 15.6979 109.342 16.241 108.443 17.2931C107.56 18.3453 107.119 20.1951 107.119 22.8256C107.119 25.4561 107.543 27.3228 108.358 28.4259C109.172 29.529 110.666 30.0891 112.821 30.0891C113.67 30.0891 114.959 29.9533 116.674 29.6987L116.589 27.9847L113.33 28.2393C111.667 28.2393 110.581 27.8489 110.055 27.0513C109.529 26.2537 109.274 24.8451 109.274 22.8256C109.274 20.8061 109.563 19.4145 110.123 18.6678C110.683 17.9211 111.752 17.5477 113.313 17.5477C114.009 17.5477 115.095 17.6326 116.572 17.8023L116.657 16.1222L115.995 16.0373Z" fill="#000" class="jsx-1189744782 elastic-logo__wordmark"/></g></svg></a><div class=" Actions_actions__9PoiP "><div class="Actions_action__THZjm"><button type="button" aria-label="Press down to open menu." aria-expanded="false"><span><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><g clip-path="url(#a)"><path d="M10 18.75c-1.57 0-3.125-3.89-3.125-8.75 0-4.86 1.556-8.75 3.125-8.75V0C7.428 0 5.625 4.506 5.625 10S7.428 20 10 20v-1.25ZM10 18.75c1.57 0 3.125-3.89 3.125-8.75 0-4.86-1.556-8.75-3.125-8.75V0c2.572 0 4.375 4.506 4.375 10S12.572 20 10 20v-1.25Z"/><path d="M3.125 7.5h13.75V6.25H3.125V7.5ZM3.125 13.75h13.75V12.5H3.125v1.25Z"/><path fill-rule="evenodd" d="M20 10c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0s10 4.477 10 10ZM1.25 10a8.75 8.75 0 1 0 17.5 0 8.75 8.75 0 0 0-17.5 0Z" clip-rule="evenodd"/></g><defs><clippath id="a"><path d="M0 0h20v20H0z"/></clippath></defs></svg></span><span class="Actions_ButtonText__L0fen">EN</span></button><div class="Dropdown_Dropdown__pUJPf Dropdown_Dropdown--modalOnMobile__olFVq"><div class="Dropdown_DropdownContent__tGePQ"><button class="Dropdown_DropdownClose__wx62b" disabled=""><span class="Dropdown_DropdownClose_text__IoOgP">Close panel</span><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.58586 8.00008L0.292969 14.293L1.70718 15.7072L8.00008 9.41429L14.293 15.7072L15.7072 14.293L9.41429 8.00008L15.7072 1.70718L14.293 0.292969L8.00008 6.58586L1.70718 0.292969L0.292969 1.70718L6.58586 8.00008Z"/></svg></button><div class="Dropdown_DropdownSections__G_B5O"><ul><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">Deutsch</a></li><li class="Actions_DropdownItem__z0FcS Actions_DropdownItemActive__0GjNS"><a class="Actions_DropdownLink__evluL">English</a></li><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">Español</a></li><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">Français</a></li><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">日本語</a></li><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">한국어</a></li><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">简体中文</a></li><li class="Actions_DropdownItem__z0FcS"><a class="Actions_DropdownLink__evluL">Português</a></li></ul></div></div></div></div><div class="Actions_action__THZjm"><button type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" class="jsx-3447688935 icon"><g fill-rule="evenodd" stroke-width=".417" clip-path="url(#a)" clip-rule="evenodd" class="jsx-3447688935"><path d="M8.332 1.99a6.346 6.346 0 1 0 0 12.693 6.346 6.346 0 0 0 0-12.693Zm-7.5 6.346a7.5 7.5 0 1 1 15 0 7.5 7.5 0 0 1-15 0Z" class="jsx-3447688935"/><path d="m14.124 13.336 5.041 5.041-.792.792-5.041-5.04.792-.793Z" class="jsx-3447688935"/></g><defs class="jsx-3447688935"><clippath id="a" class="jsx-3447688935"><path d="M0 0h20v20H0z" class="jsx-3447688935"/></clippath></defs></svg><span class="Actions_ButtonText__L0fen Actions_ButtonTextHidden__r8BOX">Search</span></button></div><div class="Actions_action__THZjm"><a href="https://cloud.elastic.co"><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><g clip-path="url(#a)"><path fill-rule="evenodd" d="M6.252 5.416a3.75 3.75 0 1 1 7.5 0 3.75 3.75 0 0 1-7.5 0ZM10.002 0a5.417 5.417 0 0 0-3.336 9.685 8.215 8.215 0 0 0-3.384 2.245C1.602 13.782.625 16.5.625 20h1.667c0-3.196.888-5.478 2.225-6.951 1.331-1.469 3.18-2.215 5.275-2.215 2.094 0 3.943.746 5.275 2.215 1.336 1.473 2.225 3.755 2.225 6.951h1.666c0-3.501-.977-6.219-2.657-8.071A8.204 8.204 0 0 0 13.2 9.79 5.417 5.417 0 0 0 10.002 0Z" clip-rule="evenodd"/><path d="M1.668 20.003h16.667v-1.667H1.668v1.667Z"/></g><defs><clippath id="a"><path d="M0 0h20v20H0z"/></clippath></defs></svg><span class="Actions_ButtonText__L0fen Actions_ButtonTextHidden__r8BOX">Login</span></a></div><button type="button" aria-expanded="false" class=" Control_navigation-control__dMg2m "><span class="Control_navigation-control_text__wyRQe">Toggle Navigation</span><span class="Control_navigation-control_icon__2h1YW"><span/><span/><span/></span></button></div><div style="top:72px" class="Buttons_navigationButtons__QJmSA"><a class="button btn-primary btn-small" href="https://cloud.elastic.co/registration"><span class="jsx-1624090998 btn-copy">Start free trial</span></a><a class="button btn-secondary-inverted btn-small" href="/contact"><span class="jsx-1624090998 btn-copy">Contact Sales</span></a></div><div style="top:72px" class="Index_navigation_flyout__73xqL"><div class="Index_navigation_flyout_content___3G_7"><nav class="Items_navigation-items__lSmFz"><div class="Items_dropdownWrapper__hJFj3" style="width:100%;height:200px"/><div><button class="Items_navigation-items_item__7YSef" aria-label="Platform, press down to open menu." aria-expanded="false">Platform<svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg></button><div class="Dropdown_Dropdown__pUJPf "><div class="Dropdown_DropdownContent__tGePQ"><button class="Dropdown_DropdownClose__wx62b" disabled=""><span class="Dropdown_DropdownClose_text__IoOgP">Close panel</span><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.58586 8.00008L0.292969 14.293L1.70718 15.7072L8.00008 9.41429L14.293 15.7072L15.7072 14.293L9.41429 8.00008L15.7072 1.70718L14.293 0.292969L8.00008 6.58586L1.70718 0.292969L0.292969 1.70718L6.58586 8.00008Z"/></svg></button><div class="Dropdown_DropdownSections__G_B5O"><div class="Items_Section__vJ9lm Items_spotlight-feature___wj__"><div class=" Card_nav-card__Gb2bd Card_ghost-card__kC3tT "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/platform"><h2 class="h5">The Search AI Company</h2></a><a class="Card_custom-link__semnr" href="/platform"><div class="Card_card-image__34JYo"><div class=" Card_thumbnail-wrapper__8kCr1 "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb72b02d269f3201a/6643847599f5a8667dc35ac7/nav-platform.png" class="Card_img-fluid__EqrlH" alt="Search, Security, Observability"/></div></div></a><a class="Card_custom-link__semnr" href="/platform"/><a class="Card_custom-link__semnr" href="/platform"/><a class="Card_custom-link__semnr" href="/platform"/><a class="Card_custom-link__semnr" href="/platform"/><a class="Card_custom-link__semnr" href="/platform"/></div><div class="Card_card-body__81rqO"><div><p>Build tailored experiences with Elastic.</p></div><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/platform" tabindex="-1"><span class="jsx-1624090998 btn-copy">Elastic Search AI Platform overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div><hr class="Card_nav-divider__yt_19"/><div><p><strong>Scale your business with Elastic Partners</strong></p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="https://partners.elastic.co/findapartner/" tabindex="-1">Find a partner<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/partners/become-a-partner" tabindex="-1">Become a partner<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/partners" tabindex="-1"><span class="jsx-1624090998 btn-copy">Partner overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0090c6239e64faf8/62aa0980c949fd5059e8aebc/logo-stack-32-color.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div><h2 class="h5">ELK Stack</h2></div><div class="Card_card-body__81rqO"><div><p>Search and analytics, data ingestion, and visualization – all at your fingertips.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/kibana" tabindex="-1">Kibana<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/elasticsearch" tabindex="-1">Elasticsearch<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/integrations" tabindex="-1">Integrations<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/elastic-stack" tabindex="-1"><span class="jsx-1624090998 btn-copy">ELK Stack overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div><hr class="Card_nav-divider__yt_19"/><div><p><strong>By developers, for developers</strong></p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/elasticsearch/vector-database" tabindex="-1">Try the world's most used vector database<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/blog/search-ai-lake-elastic-cloud-serverless" tabindex="-1">Scale with the low-latency Search Lake AI<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/community" tabindex="-1">Join our community<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div></div></div><div class="Items_Section__vJ9lm"><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdb0f38c35ae455dc/5d07f086877575d0584760a3/logo-cloud-24-color.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div><h2 class="h5">Elastic Cloud</h2></div><div class="Card_card-body__81rqO"><div><p>Unlock the power of real-time insights with Elastic on your preferred cloud provider.</p></div><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/cloud" tabindex="-1"><span class="jsx-1624090998 btn-copy">Elastic Cloud overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div><hr class="Card_nav-divider__yt_19"/><ul><li><a class="Card_dropdown-link__qZWTu" href="/elasticsearch/serverless" tabindex="-1">Elastic Cloud Serverless<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/pricing/serverless-search" tabindex="-1">Elastic Cloud Serverless pricing<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/generative-ai/search-ai-lake" tabindex="-1">Search AI Lake<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div></div></div></div></div></div></div><div><button class="Items_navigation-items_item__7YSef" aria-label="Solutions, press down to open menu." aria-expanded="false">Solutions<svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg></button><div class="Dropdown_Dropdown__pUJPf "><div class="Dropdown_DropdownContent__tGePQ"><button class="Dropdown_DropdownClose__wx62b" disabled=""><span class="Dropdown_DropdownClose_text__IoOgP">Close panel</span><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.58586 8.00008L0.292969 14.293L1.70718 15.7072L8.00008 9.41429L14.293 15.7072L15.7072 14.293L9.41429 8.00008L15.7072 1.70718L14.293 0.292969L8.00008 6.58586L1.70718 0.292969L0.292969 1.70718L6.58586 8.00008Z"/></svg></button><div class="Dropdown_DropdownSections__G_B5O"><div class="Items_Section__vJ9lm Items_spotlight-feature___wj__"><div class=" Card_nav-card__Gb2bd Card_ghost-card__kC3tT "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/enterprise-search/generative-ai"><h2 class="h5">Generative AI</h2></a><a class="Card_custom-link__semnr" href="/enterprise-search/generative-ai"/><a class="Card_custom-link__semnr" href="/enterprise-search/generative-ai"/><a class="Card_custom-link__semnr" href="/enterprise-search/generative-ai"/><a class="Card_custom-link__semnr" href="/enterprise-search/generative-ai"/></div><div class="Card_card-body__81rqO"><div><p>Prototype and integrate with LLMs faster using search AI.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/generative-ai/search-ai-lake" tabindex="-1">Search AI Lake<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/elasticsearch/ai-assistant" tabindex="-1">Elastic AI Assistant<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/rag" tabindex="-1">Retrieval Augmented Generation<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul><hr class="Card_nav-divider__yt_19"/><ul><li><a class="Card_dropdown-link__qZWTu" href="/blog/category/generative-ai" tabindex="-1">Generative AI blogs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="https://www.elastic.co/search-labs/tutorials" tabindex="-1">Search Labs tutorials<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/community" tabindex="-1">Elastic Community<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/generative-ai" tabindex="-1"><span class="jsx-1624090998 btn-copy">Generative AI overview </span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div></div><div class="Items_Section__vJ9lm Items_grid-column__BSkh1"><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/enterprise-search"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt549f7d977c2a88f4/5d082d34616162aa5a85707d/logo-enterprise-search-32-color.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div></a><a class="Card_custom-link__semnr" href="/enterprise-search"><h2 class="h5">Search</h2></a><a class="Card_custom-link__semnr" href="/enterprise-search"/><a class="Card_custom-link__semnr" href="/enterprise-search"/><a class="Card_custom-link__semnr" href="/enterprise-search"/><a class="Card_custom-link__semnr" href="/enterprise-search"/></div><div class="Card_card-body__81rqO"><div><p>Discover a world of AI possibilities — built with the power of search.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/vector-search" tabindex="-1">Vector search<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/relevance" tabindex="-1">Relevance<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/search-applications" tabindex="-1">Search applications<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/ecommerce" tabindex="-1">Ecommerce<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/site-search" tabindex="-1">Website search<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/workplace-search" tabindex="-1">Workplace search<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/enterprise-search/customer-support" tabindex="-1">Customer support<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul><hr class="Card_nav-divider__yt_19"/><ul><li><a class="Card_dropdown-link__qZWTu" href="https://www.elastic.co/search-labs" tabindex="-1">Search Labs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/enterprise-search" tabindex="-1"><span class="jsx-1624090998 btn-copy">Search overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/security"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf58b7c8e04706979/5e20f1a8132ead1155e8d0a4/logo-security-32-color.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div></a><a class="Card_custom-link__semnr" href="/security"><h2 class="h5">Security</h2></a><a class="Card_custom-link__semnr" href="/security"/><a class="Card_custom-link__semnr" href="/security"/><a class="Card_custom-link__semnr" href="/security"/><a class="Card_custom-link__semnr" href="/security"/></div><div class="Card_card-body__81rqO"><div><p>Protect, investigate, and respond to cyber threats with AI-driven security analytics.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/security/siem" tabindex="-1">SIEM<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/security/ai" tabindex="-1">Attack Discovery: AI for the SOC<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul><hr class="Card_nav-divider__yt_19"/><ul><li><a class="Card_dropdown-link__qZWTu" href="https://www.elastic.co/security-labs" tabindex="-1">Security Labs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/security" tabindex="-1"><span class="jsx-1624090998 btn-copy">Security overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/observability"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbf6ba0d0e0e1e5ab/5e20f19a2aa8e40a75136318/logo-observability-32-color.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div></a><a class="Card_custom-link__semnr" href="/observability"><h2 class="h5">Observability</h2></a><a class="Card_custom-link__semnr" href="/observability"/><a class="Card_custom-link__semnr" href="/observability"/><a class="Card_custom-link__semnr" href="/observability"/><a class="Card_custom-link__semnr" href="/observability"/></div><div class="Card_card-body__81rqO"><div><p>Unify app and infrastructure visibility to proactively resolve issues.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/observability/log-monitoring" tabindex="-1">Log monitoring and analytics<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/opentelemetry" tabindex="-1">OpenTelemetry<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/application-performance-monitoring" tabindex="-1">Application performance monitoring<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/infrastructure-monitoring" tabindex="-1">Infrastructure monitoring<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/synthetic-monitoring" tabindex="-1">Synthetic monitoring<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/real-user-monitoring" tabindex="-1">Real user monitoring<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/universal-profiling" tabindex="-1">Universal Profiling<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability/aiops" tabindex="-1">AIOps<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul><hr class="Card_nav-divider__yt_19"/><ul><li><a class="Card_dropdown-link__qZWTu" href="/observability-labs" tabindex="-1">Observability Labs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/observability" tabindex="-1"><span class="jsx-1624090998 btn-copy">Observability overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div></div></div></div></div></div><div><button class="Items_navigation-items_item__7YSef" aria-label="Customers, press down to open menu." aria-expanded="false">Customers<svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg></button><div class="Dropdown_Dropdown__pUJPf "><div class="Dropdown_DropdownContent__tGePQ"><button class="Dropdown_DropdownClose__wx62b" disabled=""><span class="Dropdown_DropdownClose_text__IoOgP">Close panel</span><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.58586 8.00008L0.292969 14.293L1.70718 15.7072L8.00008 9.41429L14.293 15.7072L15.7072 14.293L9.41429 8.00008L15.7072 1.70718L14.293 0.292969L8.00008 6.58586L1.70718 0.292969L0.292969 1.70718L6.58586 8.00008Z"/></svg></button><div class="Dropdown_DropdownSections__G_B5O"><div class="Items_Section__vJ9lm"><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/customers"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltacc5e178e52f430e/647ccc7b6be35fb5eabd2100/icon-checkmark-decorative-border.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div></a><a class="Card_custom-link__semnr" href="/customers"><h2 class="h5">By solution</h2></a><a class="Card_custom-link__semnr" href="/customers"/><a class="Card_custom-link__semnr" href="/customers"/></div><div class="Card_card-body__81rqO"><div><p>See how customers search, solve, and succeed — all on one Search AI Platform.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/customers/success-stories?usecase=enterprise-search&industry=All" tabindex="-1">Search<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/customers/success-stories?usecase=security-analytics&industry=All" tabindex="-1">Security<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/customers/success-stories?usecase=elastic-observability&industry=All" tabindex="-1">Observability<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/customers" tabindex="-1"><span class="jsx-1624090998 btn-copy">All customer stories</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><a class="Card_custom-link__semnr" href="/industries"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9f634b6f74878698/647ccc625637890f19859454/icon-briefcase.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div></a><a class="Card_custom-link__semnr" href="/industries"><h2 class="h5">Industries</h2></a><a class="Card_custom-link__semnr" href="/industries"/><a class="Card_custom-link__semnr" href="/industries"/></div><div class="Card_card-body__81rqO"><div><p>Exceed customer expectations and go to market faster.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/industries/public-sector" tabindex="-1">Public sector<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/industries/financial-services" tabindex="-1">Financial services<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/industries/telecommunications" tabindex="-1">Telecommunications<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/industries/retail-ecommerce" tabindex="-1">Retail<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/industries/manufacturing" tabindex="-1">Manufacturing<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div><div class="Card_card-footer__OfpS8"><div class="d-flex flex-column"><a class="button Card_dropdown-link__qZWTu Card_dropdown-link__spaced___Q1m0 Card_btn-tertiary__f8UEk btn-tertiary" href="/industries" tabindex="-1"><span class="jsx-1624090998 btn-copy">Industries overview</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div></div><div class="Items_Section__vJ9lm Items_spotlight-feature___wj__"><div class=" Card_nav-card__Gb2bd undefined "><div class="Card_card-header__dLhyK"><h2 class="Card_topic-heading___KyPp">Customer spotlight</h2></div><div><div class="Spotlight_spotlight-card__Qi_WV"><div class="Spotlight_card-image__4S6cS"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt652fec920f2b1a14/650c1d87aa86c13fa1cc288c/logo-nav-dropdown-48x48-cisco.svg" alt="" class=""/></div><div class="Spotlight_card-body___rb9E"><p>Cisco saves 5,000 support engineer hours per month</p><a class="button Spotlight_stretched-link__2M98R btn-tertiary" href="/customers/cisco" tabindex="-1"><span class="jsx-1624090998 btn-copy">Read more</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div><div class="Spotlight_spotlight-card__Qi_WV"><div class="Spotlight_card-image__4S6cS"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte788c0f923f209a3/668c49f5534bb913eb26e9e8/logo-dropdown-48x48-sitecore.svg" alt="" class=""/></div><div class="Spotlight_card-body___rb9E"><p>Sitecore automates 96 percent of security workflows with Elastic</p><a class="button Spotlight_stretched-link__2M98R btn-tertiary" href="/customers/sitecore-security" tabindex="-1"><span class="jsx-1624090998 btn-copy">Read more</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div><div class="Spotlight_spotlight-card__Qi_WV"><div class="Spotlight_card-image__4S6cS"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt90a52ed02808cbc1/650c1dadb25642d90add1e4e/logo-nav-dropdown-48x48-comcast.svg" alt="" class=""/></div><div class="Spotlight_card-body___rb9E"><p>Comcast transforms customer experiences with Elastic Observability</p><a class="button Spotlight_stretched-link__2M98R btn-tertiary" href="/customers/comcast" tabindex="-1"><span class="jsx-1624090998 btn-copy">Read more</span><svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg" class="jsx-1624090998"><path d="M0 7H25" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2" class="jsx-1624090998"/></svg></a></div></div></div></div></div></div></div></div></div><div><button class="Items_navigation-items_item__7YSef" aria-label="Resources, press down to open menu." aria-expanded="false">Resources<svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg></button><div class="Dropdown_Dropdown__pUJPf "><div class="Dropdown_DropdownContent__tGePQ"><button class="Dropdown_DropdownClose__wx62b" disabled=""><span class="Dropdown_DropdownClose_text__IoOgP">Close panel</span><svg class="icons_icon__n3nWe" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.58586 8.00008L0.292969 14.293L1.70718 15.7072L8.00008 9.41429L14.293 15.7072L15.7072 14.293L9.41429 8.00008L15.7072 1.70718L14.293 0.292969L8.00008 6.58586L1.70718 0.292969L0.292969 1.70718L6.58586 8.00008Z"/></svg></button><div class="Dropdown_DropdownSections__G_B5O"><div class="Items_Section__vJ9lm Items_grid-column__BSkh1"><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt96bf0c70d7851e7d/64b6cd8378402d4f9cc28b43/icon-code-self-closing.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div><h2 class="h5">Research</h2></div><div class="Card_card-body__81rqO"><div><p>Stay at the forefront of innovation with technical tips from the experts.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="https://www.elastic.co/search-labs" tabindex="-1">Search Labs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="https://www.elastic.co/security-labs" tabindex="-1">Security Labs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/observability-labs" tabindex="-1">Observability Labs<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt96bf0c70d7851e7d/64b6cd8378402d4f9cc28b43/icon-code-self-closing.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div><h2 class="h5">Build</h2></div><div class="Card_card-body__81rqO"><div><p>Code with other developers to create a better Elastic, together.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/community" tabindex="-1">Community<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="https://discuss.elastic.co" tabindex="-1">Forum<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/downloads" tabindex="-1">Downloads<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/guide" tabindex="-1">Documentation<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt96bf0c70d7851e7d/64b6cd8378402d4f9cc28b43/icon-code-self-closing.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div><h2 class="h5">Learn</h2></div><div class="Card_card-body__81rqO"><div><p>Unleash the possibilities of your data and grow your skill set.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/getting-started" tabindex="-1">Getting started<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/learn" tabindex="-1">Elastic resources<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/consulting" tabindex="-1">Consulting services<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/training" tabindex="-1">Trainings & certifications<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div></div><div class=" Card_nav-card__Gb2bd Card_icon-card__IEL2U "><div class="Card_card-header__dLhyK"><div class="Card_card-image__34JYo"><div class=" Card_icon__VSCRq "><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt96bf0c70d7851e7d/64b6cd8378402d4f9cc28b43/icon-code-self-closing.svg" class="Card_img-fluid__EqrlH" alt=""/></div></div><h2 class="h5">Connect</h2></div><div class="Card_card-body__81rqO"><div><p>Keep informed about the latest tech and news from Elastic.</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/blog" tabindex="-1">Blog<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/events" tabindex="-1">Events<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul><hr class="Card_nav-divider__yt_19"/><div><p>Have questions?</p></div><ul><li><a class="Card_dropdown-link__qZWTu" href="/contact?storm=global-header-en" tabindex="-1">Contact sales<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li><li><a class="Card_dropdown-link__qZWTu" href="/support" tabindex="-1">Get support<svg width="27" height="14" viewbox="0 0 27 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 7H25" stroke="#0077CC" stroke-width="2"/><path d="M19 1L25 7L19 13" stroke="#0077CC" stroke-width="2"/></svg></a></li></ul></div></div></div></div></div></div></div><a class="Items_navigation-items_item__7YSef" href="/pricing">Pricing</a><a class="Items_navigation-items_item__7YSef" href="https://www.elastic.co/docs">Docs</a></nav></div></div></div></div></div></header><main id="main-content" role="main"><div class="jsx-4128762135 blog-detail"><section class="jsx-4128762135"><div class="jsx-4128762135 blog-details hero-noimage pt-8"><div class="jsx-4128762135 container"><div class="jsx-4128762135 row"><div class="jsx-4128762135 col-12 col-md-9 col-lg-9"><span class="jsx-4128762135 blog-date"><time datetime="1305305967000">13 May 2011</time></span><div class="jsx-1955866259 title-wrapper"><h1 tag="H1" id="data-visualization-with-elasticsearch-and-protovis" class="jsx-1955866259 h2">Data Visualization with ElasticSearch and Protovis</h1></div><div class="jsx-4128762135 author-name d-flex my-2 pararaph-medium"><span class="jsx-4128762135 mr-1">By</span><div class="jsx-4128762135 d-flex flex-wrap"><a href="/blog/author/karel-minarik">Karel Minařík</a></div></div><div class="jsx-4128762135 social-bottom"><p class="jsx-4128762135 share-label">Share</p><ul class="jsx-3582162638 horizontalLayout social-media"><li title="Share on Twitter" class="jsx-3582162638 social-btn twitter"><a href="#" alt="Share on Twitter"/></li><li title="Share on Facebook" class="jsx-3582162638 social-btn facebook"><a href="#" alt="Share on Facebook"/></li><li title="Share on LinkedIn" class="jsx-3582162638 social-btn linkedin"><a href="#" alt="Share on LinkedIn"/></li></ul></div></div></div></div></div><div class="layout layout-05"/><div class="jsx-4128762135 article-post-wrapper blog clearfix paragraph-medium"><div class="jsx-4128762135 container"><div class="jsx-4128762135 row"><div class="jsx-4128762135 col-12 col-lg-9"><div class="jsx-4128762135 paragraph-medium"><p>The primary purpose of a search engine is, quite unsurprisingly: <em>searching</em>. You pass it a query, and it returns bunch of matching documents, in the order of relevance. We can get creative with query construction, experimenting with different analyzers for our documents, and the search engine tries hard to provide best results.</p><p>Nevertheless, a modern full-text search engine can do much more than that. At its core lies the <a href="http://en.wikipedia.org/wiki/Index_(search_engine)#Inverted_indices" target="_self"><em>inverted index</em></a>, a highly optimized data structure for efficient lookup of documents matching the query. But it also allows to compute complex <strong>aggregations</strong> of our data, called <a href="http://www.elasticsearch.org/guide/reference/api/search/facets/index.html" target="_self"><em>facets</em></a>.</p><p>The usual purpose of facets is to offer the user a <em>faceted navigation</em>, or <em>faceted search</em>. When you search for “camera” at an online store, you can refine your search by choosing different manufacturers, price ranges, or features, usually by clicking on a link, not by fiddling with the query syntax.</p><p>A canonical example of a <a href="http://blog.linkedin.com/2009/12/14/linkedin-faceted-search/" target="_self">faceted navigation at <em>LinkedIn</em></a> is pictured below.</p><p><img src="https://api.contentstack.io/v2/assets/575e4d863dc542cb38c0ad39/download?uid=blt17a34af3f950438d?uid=blt17a34af3f950438d" style="max-width:100%"/></p><p>Faceted search is one of the few ways to make powerful queries accessible to your users: see Moritz Stefaner's experiments with <a href="http://well-formed-data.net/archives/54/elastic-lists" target="_self">“Elastic Lists”</a> for inspiration.</p><p>But, we can do much more with facets then just displaying these links and checkboxes. We can use the data for makings <strong>charts</strong>, which is exactly what we'll do in this article.</p><h2 id="live_dashboards">Live Dashboards</h2><p>In almost any analytical, monitoring or data-mining service you'll hit the requirement <em>“We need a dashboard!”</em> sooner or later. Because everybody loves dashboards, whether they're useful or just pretty. As it happens, we can use facets as a pretty powerful analytical engine for our data, without writing any <a href="http://en.wikipedia.org/wiki/Online_analytical_processing" target="_self">OLAP</a> implementations.</p><p>The screenshot below is from a <a href="http://ataxosocialinsider.cz/" target="_self">social media monitoring application</a> which uses <em>ElasticSearch</em> not only to search and mine the data, but also to provide data aggregation for the interactive dashboard.</p><p><img src="https://api.contentstack.io/v2/assets/575e4d869e7a83165490ea26/download?uid=blte28d3124b31da29b?uid=blte28d3124b31da29b" alt="Ataxo Social Insider Dashboard" style="max-width:100%"/></p><p>When the user drills down into the data, adds a keyword, uses a custom query, all the charts change in real-time, thanks to the way how facet aggregation works. The dashboard is not a static snapshot of the data, pre-calculated periodically, but a truly interactive tool for data exploration.</p><p>In this article, we'll learn how to retrieve data for charts like these from <em>ElasticSearch</em>, and how to create the charts themselves.</p><h2 id="pie_charts_with_a_terms_facet">Pie charts with a <em>terms</em> facet</h2><p>For the first chart, we'll use a simple <a href="http://elasticsearch.org/guide/reference/api/search/facets/terms-facet.html" target="_self"><em>terms</em></a> facet in <em>ElasticSearch</em>. This facet returns the most frequent terms for a field, together with occurence counts.</p><p>Let's index some example data first.</p><pre class="prettyprint lang-bash">curl -X DELETE "http://localhost:9200/dashboard"<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '<br/> { "title" : "One",<br/> "tags" : ["ruby", "java", "search"]}<br/>'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '<br/> { "title" : "Two",<br/> "tags" : ["java", "search"] }<br/>'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '<br/> { "title" : "Three",<br/> "tags" : ["erlang", "search"] }<br/>'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '<br/> { "title" : "Four",<br/> "tags" : ["search"] }<br/>'<br/>curl -X POST "http://localhost:9200/dashboard/_refresh"<br/></pre><p>As you see, we are storing four articles, each with a couple of tags; an article can have multiple tags, which is trivial to express in <em>ElasticSearch</em>'s document format, JSON.</p><p>Now, to retrieve “Top Ten Tags” across the documents, we can simply do:</p><pre class="prettyprint lang-bash">curl -X POST "http://localhost:9200/dashboard/_search?pretty=true" -d '<br/>{<br/> "query" : { "match_all" : {} },<br/><br/> "facets" : {<br/> "tags" : { "terms" : {"field" : "tags", "size" : 10} }<br/> }<br/>}<br/>'<br/></pre><p>You can see that we are retrieving all documents, and we have defined a terms facet called “tags”. This query will return something like this:</p><pre class="prettyprint lang-js">{<br/> "took" : 2,<br/> // ... snip ...<br/> "hits" : {<br/> "total" : 4,<br/> // ... snip ...<br/> },<br/> "facets" : {<br/> "tags" : {<br/> "_type" : "terms",<br/> "missing" : 1,<br/> "terms" : [<br/> { "term" : "search", "count" : 4 },<br/> { "term" : "java", "count" : 2 },<br/> { "term" : "ruby", "count" : 1 },<br/> { "term" : "erlang", "count" : 1 }<br/> ]<br/> }<br/> }<br/>}<br/></pre><p>We are interested in the facets section of the JSON, notably in the facets.tags.terms array. It tells us that we have four articles tagged <em>search</em>, two tagged <em>java</em>, and so on. (Of course, we could add a size parameter to the query, to skip the results altogether.)</p><p>Suitable visualization for this type of ratio distribution is a pie chart, or its variation: a donut chart. The end result is displayed below (you may want to check out the <a href="/blog/assets/dashboards/donut.html" target="_self">working example</a>).</p><p><img src="https://api.contentstack.io/v2/assets/575e4d86d8edd48f76938833/download?uid=blt58154a7cdf0d295f?uid=blt58154a7cdf0d295f"/></p><p>We will use <a href="http://vis.stanford.edu/protovis/" target="_self"><em>Protovis</em></a>, a JavaScript data visualization toolkit. <em>Protovis</em> is 100% open source, and you could think of it as <em>Ruby on Rails</em> for data visualization; in stark contrast to similar tools, it does not ship with a limited set of chart types to “choose” from, but it defines a set of primitives and a flexible domain-specific language so you can easily build your own custom visualizations. Creating <a href="http://vis.stanford.edu/protovis/ex/pie.html" target="_self">pie charts</a> is pretty easy in <em>Protovis</em>.</p><p>Since <em>ElasticSearch</em> returns JSON data, we can load it with a simple Ajax call. Don't forget that you can clone or download the <a href="https://gist.github.com/966338" target="_self">full source code</a> for this example.</p><p>First, we need a HTML file to contain our chart and to load the data from <em>ElasticSearch</em>:</p><pre class="prettyprint lang-js"><!DOCTYPE html><br/><html><br/><head><br/> <title>ElasticSearch Terms Facet Donut Chart</title><br/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><br/><br/> <!-- Load JS libraries --><br/> <script src="jquery-1.5.1.min.js"></script><br/> <script src="protovis-r3.2.js"></script><br/> <script src="donut.js"></script><br/> <script><br/> $( function() { load_data(); });<br/><br/> var load_data = function() {<br/> $.ajax({ url: 'http://localhost:9200/dashboard/article/_search?pretty=true'<br/> , type: 'POST'<br/> , data : JSON.stringify({<br/> "query" : { "match_all" : {} },<br/><br/> "facets" : {<br/> "tags" : {<br/> "terms" : {<br/> "field" : "tags",<br/> "size" : "10"<br/> }<br/> }<br/> }<br/> })<br/> , dataType : 'json'<br/> , processData: false<br/> , success: function(json, statusText, xhr) {<br/> return display_chart(json);<br/> }<br/> , error: function(xhr, message, error) {<br/> console.error("Error while loading data from ElasticSearch", message);<br/> throw(error);<br/> }<br/> });<br/><br/> var display_chart = function(json) {<br/> Donut().data(json.facets.tags.terms).draw();<br/> };<br/><br/> };<br/> </script><br/></head><br/><body><br/><br/> <!-- Placeholder for the chart --><br/> <div id="chart"></div><br/><br/></body><br/></html><br/></pre><p>On document load, we retrieve exactly the same facet, via Ajax, as we did earlier with curl. In the jQuery Ajax <em>callback</em>, we pass the returned JSON to the Donut() function via the display_chart() wrapper.</p><p>The Donut() function itself is displayed, with annotations, below:</p><pre class="prettyprint lang-js">// =====================================================================================================<br/>// A donut chart with Protovis - See http://vis.stanford.edu/protovis/ex/pie.html<br/>// =====================================================================================================<br/>var Donut = function(dom_id) {<br/><br/> if ('undefined' == typeof dom_id) { // Set the default DOM element ID to bind<br/> dom_id = 'chart';<br/> }<br/><br/> var data = function(json) { // Set the data for the chart<br/> this.data = json;<br/> return this;<br/> };<br/><br/> var draw = function() {<br/><br/> var entries = this.data.sort( function(a, b) { // Sort the data by term names, so the<br/> return a.term < b.term ? -1 : 1; // color scheme for wedges is preserved<br/> }), // with any order<br/><br/> values = pv.map(entries, function(e) { // Create an array holding just the counts<br/> return e.count;<br/> });<br/> // console.log('Drawing', entries, values);<br/><br/> var w = 200, // Dimensions and color scheme for the chart<br/> h = 200,<br/> colors = pv.Colors.category10().range();<br/><br/> var vis = new pv.Panel() // Create the basis panel<br/> .width(w)<br/> .height(h)<br/> .margin(0, 0, 0, 0);<br/><br/> vis.add(pv.Wedge) // Create the "wedges" of the chart<br/> .def("active", -1) // Auxiliary variable to hold mouse over state<br/> .data( pv.normalize(values) ) // Pass the normalized data to Protovis<br/> .left(w/3) // Set-up chart position and dimension<br/> .top(w/3)<br/> .outerRadius(w/3)<br/> .innerRadius(15) // Create a "donut hole" in the center<br/> .angle( function(d) { // Compute the "width" of the wedge<br/> return d * 2 * Math.PI;<br/> })<br/> .strokeStyle("#fff") // Add white stroke<br/><br/> .event("mouseover", function() { // On "mouse over", set the "wedge" as active<br/> this.active(this.index);<br/> this.cursor('pointer');<br/> return this.root.render();<br/> })<br/><br/> .event("mouseout", function() { // On "mouse out", clear the active state<br/> this.active(-1);<br/> return this.root.render();<br/> })<br/><br/> .event("mousedown", function(d) { // On "mouse down", perform action,<br/> var term = entries[this.index].term; // such as filtering the results...<br/> return (alert("Filter the results by '"+term+"'"));<br/> })<br/><br/><br/> .anchor("right").add(pv.Dot) // Add the left part of he "inline" label,<br/> // displayed inside the donut "hole"<br/><br/> .visible( function() { // The label is visible when its wedge is active<br/> return this.parent.children[0]<br/> .active() == this.index;<br/> })<br/> .fillStyle("#222")<br/> .lineWidth(0)<br/> .radius(14)<br/><br/> .anchor("center").add(pv.Bar) // Add the middle part of the label<br/> .fillStyle("#222")<br/> .width(function(d) { // Compute width:<br/> return (d*100).toFixed(1) // add pixels for percents<br/> .toString().length*4 +<br/> 10 + // add pixels for glyphs (%, etc)<br/> entries[this.index] // add pixels for letters (very rough)<br/> .term.length*9;<br/> })<br/> .height(28)<br/> .top((w/3)-14)<br/><br/> .anchor("right").add(pv.Dot) // Add the right part of the label<br/> .fillStyle("#222")<br/> .lineWidth(0)<br/> .radius(14)<br/><br/><br/> .parent.children[2].anchor("left") // Add the text to label<br/> .add(pv.Label)<br/> .left((w/3)-7)<br/> .text(function(d) { // Combine the text for label<br/> return (d*100).toFixed(1) + "%" +<br/> ' ' + entries[this.index].term +<br/> ' (' + values[this.index] + ')';<br/> })<br/> .textStyle("#fff")<br/><br/> .root.canvas(dom_id) // Bind the chart to DOM element<br/> .render(); // And render it.<br/> };<br/><br/> return { // Create the public API<br/> data : data,<br/> draw : draw<br/> };<br/><br/>};<br/></pre><p>As you can see, with a simple transformation of JSON data returned from <em>ElasticSearch</em>, we're able to create rich, attractive visualization of tag distribution among our articles.</p><p>It's worth repeating that the visualization will work in <em>exactly the same way</em> when we use a different query, such as displaying only articles written by a certain author or published in certain date range.</p><h2 id="timelines_with_a_date_histogram_facets">Timelines with a <em>date histogram</em> facets</h2><p><em>Protovis</em> makes it very easy to create another common form of visualization: the <a href="http://vis.stanford.edu/protovis/ex/zoom.html" target="_self"><em>timeline</em></a>. Any type of data, tied to a certain date, such as an article being published, an event taking place, a purchase being completed can be visualized on a timeline.</p><p>The end result should look like this:</p><p><img src="https://api.contentstack.io/v2/assets/575e4d8612798d8e381fff88/download?uid=blt7e9c06ec8d71871b?uid=blt7e9c06ec8d71871b" style="max-width:100%"/></p><p>So, let's store handful of articles with a published date in the index.</p><pre class="prettyprint lang-bash">curl -X DELETE "http://localhost:9200/dashboard"<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "1", "published" : "2011-01-01" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "2", "published" : "2011-01-02" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "3", "published" : "2011-01-02" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "4", "published" : "2011-01-03" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "5", "published" : "2011-01-04" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "6", "published" : "2011-01-04" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "7", "published" : "2011-01-04" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "8", "published" : "2011-01-04" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "9", "published" : "2011-01-10" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "10", "published" : "2011-01-12" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "11", "published" : "2011-01-13" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "12", "published" : "2011-01-14" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "13", "published" : "2011-01-14" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "14", "published" : "2011-01-15" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "15", "published" : "2011-01-20" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "16", "published" : "2011-01-20" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "17", "published" : "2011-01-21" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "18", "published" : "2011-01-22" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "19", "published" : "2011-01-23" }'<br/>curl -X POST "http://localhost:9200/dashboard/article" -d '{ "t" : "20", "published" : "2011-01-24" }'<br/>curl -X POST "http://localhost:9200/dashboard/_refresh"<br/></pre><p>To retrieve the frequency of articles being published, we'll use a <a href="/guide/reference/api/search/facets/date-histogram-facet.html" target="_self"><em>date histogram</em> facet</a> in <em>ElasticSearch</em>.</p><pre class="prettyprint lang-bash">curl -X POST "http://localhost:9200/dashboard/_search?pretty=true" -d '<br/>{<br/> "query" : { "match_all" : {} },<br/><br/> "facets" : {<br/> "published_on" : {<br/> "date_histogram" : {<br/> "field" : "published",<br/> "interval" : "day"<br/> }<br/> }<br/> }<br/>}<br/>'<br/></pre><p>Notice how we set the interval to day; we could easily change the granularity of the histogram to week, month, or year.</p><p>This query will return JSON looking like this:</p><pre class="prettyprint lang-js">{<br/> "took" : 2,<br/> // ... snip ...<br/> "hits" : {<br/> "total" : 4,<br/> // ... snip ...<br/> },<br/> "facets" : {<br/> "published" : {<br/> "_type" : "histogram",<br/> "entries" : [<br/> { "time" : 1293840000000, "count" : 1 },<br/> { "time" : 1293926400000, "count" : 2 }<br/> // ... snip ...<br/> ]<br/> }<br/> }<br/>}<br/></pre><p>We are interested in the facets.published.entries array, as in the previous example. And again, we will need some HTML to hold our chart and load the data. Since the mechanics are very similar, please refer to the <a href="https://gist.github.com/900542/#file_chart.html" target="_self">full source code</a> for this example.</p><p>With the JSON data, it's very easy to create rich, interactive timeline in <em>Protovis</em>, by using a customized <a href="http://vis.stanford.edu/protovis/ex/area.html" target="_self"><em>area chart</em></a>.</p><p>The full, annotated code of the Timeline() JavaScript function is displayed below.</p><pre class="prettyprint lang-js">// =====================================================================================================<br/>// A timeline chart with Protovis - See http://vis.stanford.edu/protovis/ex/area.html<br/>// =====================================================================================================<br/><br/>var Timeline = function(dom_id) {<br/> if ('undefined' == typeof dom_id) { // Set the default DOM element ID to bind<br/> dom_id = 'chart';<br/> }<br/><br/> var data = function(json) { // Set the data for the chart<br/> this.data = json;<br/> return this;<br/> };<br/><br/> var draw = function() {<br/><br/> var entries = this.data; // Set-up the data<br/> entries.push({ // Add the last "blank" entry for proper<br/> count : entries[entries.length-1].count // timeline ending<br/> });<br/> // console.log('Drawing, ', entries);<br/><br/> var w = 600, // Set-up dimensions and scales for the chart<br/> h = 100,<br/> max = pv.max(entries, function(d) {return d.count;}),<br/> x = pv.Scale.linear(0, entries.length-1).range(0, w),<br/> y = pv.Scale.linear(0, max).range(0, h);<br/><br/> var vis = new pv.Panel() // Create the basis panel<br/> .width(w)<br/> .height(h)<br/> .bottom(20)<br/> .left(20)<br/> .right(40)<br/> .top(40);<br/><br/> vis.add(pv.Label) // Add the chart legend at top left<br/> .top(-20)<br/> .text(function() {<br/> var first = new Date(entries[0].time);<br/> var last = new Date(entries[entries.length-2].time);<br/> return "Articles published between " +<br/> [ first.getDate(),<br/> first.getMonth() + 1,<br/> first.getFullYear()<br/> ].join("/") +<br/><br/> " and " +<br/><br/> [ last.getDate(),<br/> last.getMonth() + 1,<br/> last.getFullYear()<br/> ].join("/");<br/> })<br/> .textStyle("#B1B1B1")<br/><br/> vis.add(pv.Rule) // Add the X-ticks<br/> .data(entries)<br/> .visible(function(d) {return d.time;})<br/> .left(function() { return x(this.index); })<br/> .bottom(-15)<br/> .height(15)<br/> .strokeStyle("#33A3E1")<br/><br/> .anchor("right").add(pv.Label) // Add the tick label (DD/MM)<br/> .text(function(d) {<br/> var date = new Date(d.time);<br/> return [<br/> date.getDate(),<br/> date.getMonth() + 1<br/> ].join('/');<br/> })<br/> .textStyle("#2C90C8")<br/> .textMargin("5")<br/><br/> vis.add(pv.Rule) // Add the Y-ticks<br/> .data(y.ticks(max)) // Compute tick levels based on the "max" value<br/> .bottom(y)<br/> .strokeStyle("#eee")<br/> .anchor("left").add(pv.Label)<br/> .text(y.tickFormat)<br/> .textStyle("#c0c0c0")<br/><br/> vis.add(pv.Panel) // Add container panel for the chart<br/> .add(pv.Area) // Add the area segments for each entry<br/> .def("active", -1) // Auxiliary variable to hold mouse state<br/> .data(entries) // Pass the data to Protovis<br/> .bottom(0)<br/> .left(function(d) {return x(this.index);}) // Compute x-axis based on scale<br/> .height(function(d) {return y(d.count);}) // Compute y-axis based on scale<br/> .interpolate('cardinal') // Make the chart curve smooth<br/> .segmented(true) // Divide into "segments" (for interactivity)<br/> .fillStyle("#79D0F3")<br/><br/> .event("mouseover", function() { // On "mouse over", set segment as active<br/> this.active(this.index);<br/> return this.root.render();<br/> })<br/><br/> .event("mouseout", function() { // On "mouse out", clear the active state<br/> this.active(-1);<br/> return this.root.render();<br/> })<br/><br/> .event("mousedown", function(d) { // On "mouse down", perform action,<br/> var time = entries[this.index].time; // eg filtering the results...<br/> return (alert("Timestamp: '"+time+"'"));<br/> })<br/><br/> .anchor("top").add(pv.Line) // Add thick stroke to the chart<br/> .lineWidth(3)<br/> .strokeStyle('#33A3E1')<br/><br/> .anchor("top").add(pv.Dot) // Add the circle "label" displaying<br/> // the count for this day<br/><br/> .visible( function() { // The label is only visible when<br/> return this.parent.children[0] // its segment is active<br/> .active() == this.index;<br/> })<br/> .left(function(d) { return x(this.index); })<br/> .bottom(function(d) { return y(d.count); })<br/> .fillStyle("#33A3E1")<br/> .lineWidth(0)<br/> .radius(14)<br/><br/> .anchor("center").add(pv.Label) // Add text to the label<br/> .text(function(d) {return d.count;})<br/> .textStyle("#E7EFF4")<br/><br/> .root.canvas(dom_id) // Bind the chart to DOM element<br/> .render(); // And render it.<br/> };<br/><br/> return { // Create the public API<br/> data : data,<br/> draw : draw<br/> };<br/><br/>};<br/></pre><p>Be sure to check out the documentation on the <a href="http://vis.stanford.edu/protovis/docs/area.html" target="_self"><em>area</em></a> primitive in <em>Protovis</em>, and watch what happens when you change interpolate('cardinal') to interpolate('step-after'). You should have no problems to draw a <em>stacked area chart</em> from multiple facets, add more interactivity, and completely customize the visualization.</p><p>The important thing to notice here is that the chart fully responds to any queries we pass to <em>ElasticSearch</em>, making it possible to simply and instantly visualize metrics such as <em>“Display publishing frequence of this author on this topic in last three months”</em>, with a query such as:</p><pre>author:John AND topic:Search AND published:[2011-03-01 TO 2011-05-31]</pre><h2 id="tldr">tl;dr</h2><p>When you need to make rich, interactive data visualization for complex, ad-hoc queries, using data returned by <em>facets</em> from <a href="/products/elasticsearch" target="_self"><em>Elasticsearch</em></a> may well be one of the easiest ways to do it, since you can just pass the JSON response to a toolkit like <a href="http://vis.stanford.edu/protovis/" target="_self"><em>Protovis</em></a>.</p><p>By adapting the approach and code from this article, you should have a working example for your data in couple of hours.</p></div><div class="layout layout-07"/></div><div class="jsx-4128762135 col-12 col-md-5 col-lg-3 mx-auto"><div id="blog-sidebar" class="jsx-723900996"><div class="jsx-723900996 blog-sidebar-section"><div id="rtp-sidebar" class="jsx-723900996 rtp-sidebar-content-wrapper"/><div data-rtp-template-id="template2" class="jsx-723900996 RTP_RCMD2"/></div></div></div></div></div></div><div class="layout layout-07"/></section></div></main><div id="elastic-footer"/><footer class="Footer_footer__Q5T55" aria-label="footer"><div class="Footer_footerWrapper__yhyD_ bg-dark-ink" data-component-theme="dark"><div class="container"><div class="row Footer_footerTop__2eyMt"><div class="Footer_footerNav__LFrAZ"><div><div><div class="Footer_logo__EaWBg"><a href="/"><img src="https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/bltf8467a95eaa27e4a/6638d7da0d02e4e98155aaa3/logo-tagline_secondary_all_white-177.svg" alt="Elastic home"/></a></div></div><div><div class="Footer_followUs__Y4Nvp"><div><h2 class="topic-heading">Follow us</h2></div><ul class="Footer_socialIconList__eaA5a"><li class="LinkedIn"><a id="footer_linkedin" href="https://www.linkedin.com/company/elastic-co"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte7cfb1a091901ce1/5eb00c925751b2150e57a9d6/footer-icon-linkedin.svg" alt="Elastic's LinkedIn page"/></a></li><li class="YouTube"><a id="footer_youtube" href="https://www.youtube.com/user/elasticsearch"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7c28b18be98b1af8/5eb00ca908d37e6d82ef7655/footer-icon-youtube.svg" alt="Elastic's YouTube page"/></a></li><li class="Facebook"><a id="footer_facebook" href="https://www.facebook.com/elastic.co"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt75566c5278ad68da/5eb00c59d238e314f259fbea/footer-icon-facebook.svg" alt="Elastic's Facebook page"/></a></li><li class="Twitter"><a id="footer_twitter" href="https://www.twitter.com/elastic"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt341fed86979a9fbb/5eb00c76b8a6356e4ddc1180/footer-icon-twitter.svg" alt="Elastic's Twitter page"/></a></li><li class="GitHub"><a id="" href="https://github.com/elastic"><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6ef5841a45696d80/64ca2a6fc530871313bc3822/icon-footer-github.svg" alt="Elastic's GitHub page"/></a></li></ul></div></div></div><div class="Footer_rightSide__zawr1"><ul class="Footer_desktopNav__gXs3Z"><li><h2 class="topic-heading">About us</h2><div class="Footer_innerNav__tQcnP"><a href="/about/">About Elastic</a><a href="/about/history-of-elasticsearch">Our story</a><a href="/about/leadership">Leadership</a><a href="/careers/diversity-and-inclusion">DE&I</a><a href="/blog">Blog</a></div></li><li><h2 class="topic-heading">Join us</h2><div class="Footer_innerNav__tQcnP"><a href="/careers">Careers</a><a href="https://jobs.elastic.co/#/">Career portal</a></div></li><li><h2 class="topic-heading">Press</h2><div class="Footer_innerNav__tQcnP"><a href="/about/press#press-releases">Press releases</a><a href="/about/press#elastic-in-the-news">News articles</a></div></li></ul><ul class="Footer_desktopNav__gXs3Z"><li><h2 class="topic-heading">Partners</h2><div class="Footer_innerNav__tQcnP"><a href="https://partners.elastic.co/findapartner/">Find a partner</a><a href="https://login.elastic.co/login/partner">Partner login</a><a href="https://partners.elastic.co/English/register_email.aspx">Request access</a><a href="/partners/become-a-partner">Become a partner</a></div></li><li><h2 class="topic-heading">Trust & Security</h2><div class="Footer_innerNav__tQcnP"><a href="/trust">Trust center</a><a href="https://secure.ethicspoint.com/domain/media/en/gui/74447/index.html">EthicsPoint portal</a><a href="/about/trust#international-trade-compliance%E2%80%94eccn-information">ECCN report</a><a href="mailto:ethics@elastic.co">Ethics email</a></div></li></ul><ul class="Footer_desktopNav__gXs3Z"><li><h2 class="topic-heading">Investor relations</h2><div class="Footer_innerNav__tQcnP"><a href="https://ir.elastic.co/home/default.aspx">Investor resources</a><a href="https://ir.elastic.co/governance/corporate-governance/default.aspx">Governance</a><a href="https://ir.elastic.co/financials/quarterly-results/default.aspx">Financials</a><a href="https://ir.elastic.co/stock/stock-quote/default.aspx">Stock</a></div></li><li><h2 class="topic-heading">EXCELLENCE AWARDS</h2><div class="Footer_innerNav__tQcnP"><a href="/blog/2022-elastic-excellence-awards-winners">Previous winners</a><a href="/elasticon">ElasticON Tour</a><a href="/events/sponsor">Become a sponsor</a><a href="/events/">All events</a></div></li></ul><div class="Footer_mobileNav__Dvl0g"><div><div data-accordion-component="Accordion" class="accordion"><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834616" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834616" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">About us</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834616" hidden=""><div class="Footer_innerNav__tQcnP"><a href="/about/">About Elastic</a><a href="/about/history-of-elasticsearch">Our story</a><a href="/about/leadership">Leadership</a><a href="/careers/diversity-and-inclusion">DE&I</a><a href="/blog">Blog</a></div></div></div><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834617" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834617" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">Join us</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834617" hidden=""><div class="Footer_innerNav__tQcnP"><a href="/careers">Careers</a><a href="https://jobs.elastic.co/#/">Career portal</a></div></div></div><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834618" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834618" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">Press</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834618" hidden=""><div class="Footer_innerNav__tQcnP"><a href="/about/press#press-releases">Press releases</a><a href="/about/press#elastic-in-the-news">News articles</a></div></div></div><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834619" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834619" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">Partners</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834619" hidden=""><div class="Footer_innerNav__tQcnP"><a href="https://partners.elastic.co/findapartner/">Find a partner</a><a href="https://login.elastic.co/login/partner">Partner login</a><a href="https://partners.elastic.co/English/register_email.aspx">Request access</a><a href="/partners/become-a-partner">Become a partner</a></div></div></div><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834620" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834620" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">Trust & Security</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834620" hidden=""><div class="Footer_innerNav__tQcnP"><a href="/trust">Trust center</a><a href="https://secure.ethicspoint.com/domain/media/en/gui/74447/index.html">EthicsPoint portal</a><a href="/about/trust#international-trade-compliance%E2%80%94eccn-information">ECCN report</a><a href="mailto:ethics@elastic.co">Ethics email</a></div></div></div><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834621" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834621" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">Investor relations</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834621" hidden=""><div class="Footer_innerNav__tQcnP"><a href="https://ir.elastic.co/home/default.aspx">Investor resources</a><a href="https://ir.elastic.co/governance/corporate-governance/default.aspx">Governance</a><a href="https://ir.elastic.co/financials/quarterly-results/default.aspx">Financials</a><a href="https://ir.elastic.co/stock/stock-quote/default.aspx">Stock</a></div></div></div><div data-accordion-component="AccordionItem" class="accordion__item"><div data-accordion-component="AccordionItemHeading" role="heading" class="accordion__heading" aria-level="3"><div class="accordion__button" id="accordion__heading-raa-1834622" aria-disabled="false" aria-expanded="false" aria-controls="accordion__panel-raa-1834622" role="button" tabindex="0" data-accordion-component="AccordionItemButton"><h2 class="topic-heading">EXCELLENCE AWARDS</h2><div class="Footer_accordion__arrow__Onf1u"/></div></div><div data-accordion-component="AccordionItemPanel" class="accordion__panel" id="accordion__panel-raa-1834622" hidden=""><div class="Footer_innerNav__tQcnP"><a href="/blog/2022-elastic-excellence-awards-winners">Previous winners</a><a href="/elasticon">ElasticON Tour</a><a href="/events/sponsor">Become a sponsor</a><a href="/events/">All events</a></div></div></div></div></div></div></div></div></div><div class="row Footer_footerBottom__iA_rq"><div class="Footer_footnoteContainer__y0YTd"><div class="Footer_legalLinkContainer__0vR8C"><div class="text-start"><ul class="Footer_legalLinks__5LXti"><li class="Trademarks"><a href="/legal/trademarks">Trademarks</a></li><li class="Terms of Use"><a href="/legal/terms-of-use">Terms of Use</a></li><li class="Privacy"><a href="/legal/privacy-statement">Privacy</a></li><li class="Sitemap"><a href="/sitemap">Sitemap</a></li></ul><div class="Footer_copyrightDate__1vxFm"><p>© <span class="copyright-year"/>. Elasticsearch B.V. All Rights Reserved</p></div></div></div><div class="Footer_footnote__z5kru"><p>Elastic, Elasticsearch and other related marks are trademarks, logos or registered trademarks of Elasticsearch B.V. in the United States and other countries.</p><p>Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant logo are trademarks of the <a href="https://www.apache.org/">Apache Software Foundation</a> in the United States and/or other countries. All other brand names, product names, or trademarks belong to their respective owners.</p></div></div></div></div></div></footer></div></body>
推荐文章
暴躁的机器猫
·
VS运行调试:当前无法命中断点,还没有为该文档加载任何符号|解决方案|C/S框架网
1 月前
旅途中的手套
·
游戏特快
3 月前
想出国的碗
·
14.1. csv — CSV 文件读写 — Python 3.6.15 文档
7 月前
活泼的企鹅
·
使用复选框将粘贴转到目标范围使用Google-腾讯云开发者社区-腾讯云
1 年前
热心的钥匙扣
·
浅草小子/浅草キッド日剧剧情介绍第1-全集,什么时候上映播出,演员表_九度网
1 年前