{"id":1004,"date":"2023-04-29T12:46:46","date_gmt":"2023-04-29T15:46:46","guid":{"rendered":"https:\/\/blog.intruderlabs.com.br\/?p=1004"},"modified":"2023-04-29T12:46:46","modified_gmt":"2023-04-29T15:46:46","slug":"intrusearch-domine-pesquisas-e-otimize-projetos","status":"publish","type":"post","link":"https:\/\/blog.intruderlabs.com.br\/en\/intrusearch-domine-pesquisas-e-otimize-projetos\/","title":{"rendered":"IntruSearch &#8211; Domine pesquisas e otimize projetos"},"content":{"rendered":"<p>O <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\">IntruSearch<\/a> <\/strong>\u00e9 uma ferramenta poderosa que oferece muitos benef\u00edcios para os desenvolvedores que desejam trabalhar com o mecanismo de busca de c\u00f3digo aberto, <strong>OpenSearch<\/strong>. Uma de suas principais vantagens \u00e9 que ela (a ferramenta <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch<\/a><\/strong>) simplifica o processo de consulta e manipula\u00e7\u00e3o de \u00edndices de pesquisa, tornando o seu uso f\u00e1cil, mesmo para iniciantes.<\/p>\n\n\n\n<p>O <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">Intrusearch <\/a><\/strong>pode economizar aos desenvolvedores uma quantidade significativa de tempo e esfor\u00e7o, al\u00e9m de ajud\u00e1-los a melhorar suas habilidades de programa\u00e7\u00e3o de <strong>projetos em Go<\/strong> ao trabalhar com uma biblioteca poderosa e intuitiva.<\/p>\n\n\n\n<p>Outra grande vantagem do <a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>IntruSearch<\/strong> <\/a>\u00e9 sua <strong>compatibilidade com a vers\u00e3o mais recente do OpenSearch.<\/strong> Isso significa que os desenvolvedores podem confiar no <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch <\/a><\/strong>para seus projetos relacionados ao <strong>OpenSearch <\/strong>e podem confiar que ele funcionar\u00e1 perfeitamente com sua base de c\u00f3digo existente.<\/p>\n\n\n\n<p><strong>Nota<\/strong>: a vers\u00e3o mais recente do <strong>OpenSearch <\/strong>foi considerada at\u00e9 o dia da publica\u00e7\u00e3o dessa postagem.<\/p>\n\n\n\n<p>O <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch <\/a><\/strong>est\u00e1 constantemente sendo aprimorado e atualizado, o que garante que ele continue sendo uma ferramenta confi\u00e1vel e atualizada para trabalhar com o <strong>OpenSearch<\/strong>.<\/p>\n\n\n\n<p>Al\u00e9m disso, o <strong>IntruSearch <\/strong>oferece <strong>excelente desempenho e estabilidade<\/strong>, o que o torna uma escolha confi\u00e1vel para aplica\u00e7\u00f5es de alto tr\u00e1fego e sistemas cr\u00edticos. Isso se deve, em parte, \u00e0 sua API simplificada e eficiente, que <strong>minimiza a quantidade de sobrecarga e tr\u00e1fego de rede necess\u00e1rios para cada solicita\u00e7\u00e3o.<\/strong><\/p>\n\n\n\n<p>Em geral, o <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch <\/a><\/strong>\u00e9 uma excelente op\u00e7\u00e3o para os desenvolvedores que desejam trabalhar com o <strong>OpenSearch <\/strong>de maneira r\u00e1pida, eficiente e confi\u00e1vel. Se voc\u00ea \u00e9 um desenvolvedor experiente ou est\u00e1 apenas come\u00e7ando, o <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch <\/a><\/strong>pode ajud\u00e1-lo a aproveitar ao m\u00e1ximo seus projetos <strong>OpenSearch <\/strong>e levar suas habilidades de programa\u00e7\u00e3o para o pr\u00f3ximo n\u00edvel.<\/p>\n\n\n\n<p><strong>Nota:<\/strong> Para acessar o passo a passo de como instalar o <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch<\/a><\/strong>, voc\u00ea pode seguir este link para a documenta\u00e7\u00e3o no Github: [<a href=\"https:\/\/github.com\/intruderlabs\/intrusearch#installation\">https:\/\/github.com\/intruderlabs\/intrusearch#installation<\/a>]. L\u00e1 voc\u00ea encontrar\u00e1 instru\u00e7\u00f5es detalhadas sobre como baixar e instalar a ferramenta em diferentes sistemas operacionais, al\u00e9m de um guia passo a passo sobre como come\u00e7ar a usar o <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch <\/a><\/strong>para seus projetos <strong>OpenSearch<\/strong>.<\/p>\n\n\n\n<p>Mas na pr\u00e1tica, ser\u00e1 que vale mesmo a pena utilizar essa nova <em>API<\/em>? Observe abaixo a diferen\u00e7a entre a cria\u00e7\u00e3o de \u00edndices sem o <strong><a href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\" rel=\"noreferrer noopener\">IntruSearch<\/a><\/strong>:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cria\u00e7\u00e3o de \u00edndice sem o IntruSearch:<\/h2>\n\n\n\n<p>O c\u00f3digo abaixo apresenta um exemplo de cria\u00e7\u00e3o de \u00edndice sem o uso do <strong>IntruSearch<\/strong>. Essa abordagem direta utiliza a biblioteca Go para interagir diretamente com o <strong>OpenSearch<\/strong>. O c\u00f3digo mostra como configurar a conex\u00e3o com o <strong>OpenSearch <\/strong>e criar um novo \u00edndice com mapeamento personalizado.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\"><pre class=\"brush: go; title: ; notranslate\" title=\"\">\npackage main\n\nimport (\n\t&quot;context&quot;\n\t&quot;fmt&quot;\n\t&quot;github.com\/elastic\/go-elasticsearch\/v8&quot;\n\t&quot;log&quot;\n\t&quot;strings&quot;\n)\n\nfunc main() {\n\t\/\/ Set up connection configuration with OpenSearch\n\tconfig := elasticsearch.Config{\n\t\tAddresses: &#x5B;]string{\n\t\t\t&quot;http:\/\/localhost:9200&quot;, \/\/ OpenSearch URL\n\t\t},\n\t}\n\n\t\/\/ Create a new client\n\tclient, err := elasticsearch.NewClient(config)\n\tif err != nil {\n\t\tlog.Fatalf(&quot;Error creating the client: %s&quot;, err)\n\t}\n\n\t\/\/ Define the settings for the new index\n\tindexName := &quot;my-new-index&quot;\n\tmapping := `{\n\t\t&quot;mappings&quot;: {\n\t\t\t&quot;properties&quot;: {\n\t\t\t\t&quot;title&quot;: {\n\t\t\t\t\t&quot;type&quot;: &quot;text&quot;\n\t\t\t\t},\n\t\t\t\t&quot;description&quot;: {\n\t\t\t\t\t&quot;type&quot;: &quot;text&quot;\n\t\t\t\t},\n\t\t\t\t&quot;publication_date&quot;: {\n\t\t\t\t\t&quot;type&quot;: &quot;date&quot;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}`\n\n\t\/\/ Create the new index\n\tres, err := client.Indices.Create(\n\t\tindexName,\n\t\tclient.Indices.Create.WithBody(strings.NewReader(mapping)),\n\t\tclient.Indices.Create.WithContext(context.Background()),\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(&quot;Error creating the index: %s&quot;, err)\n\t}\n\n\tdefer res.Body.Close()\n\n\t\/\/ Check if the index creation was successful\n\tif res.IsError() {\n\t\tlog.Fatalf(&quot;Error creating the index: %s&quot;, res.Status())\n\t}\n\n\tfmt.Printf(&quot;The index %s was successfully created!&quot;, indexName)\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Cria\u00e7\u00e3o de \u00edndice com o IntruSearch:<\/h2>\n\n\n\n<p>J\u00e1 nesse exemplo abaixo, \u00e9 apresentado um c\u00f3digo para criar \u00edndices com o uso do <strong>IntruSearch<\/strong>. O c\u00f3digo apresentado \u00e9 muito mais simples, mostrando como criar um cliente de busca e criar um novo \u00edndice. A biblioteca <strong>IntruSearch <\/strong>abstrai a complexidade do processo de cria\u00e7\u00e3o de \u00edndices, tornando-o mais f\u00e1cil e intuitiva.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\"><pre class=\"brush: go; title: ; notranslate\" title=\"\">\npackage main\n\nimport (\n\tintrusearch &quot;github.com\/intruderlabs\/intrusearch\/main&quot;\n)\n\nfunc main() {\n\tclient := NewSearchClient()\n\tclient.CreateIndex(&quot;test&quot;)\n}\n\nfunc NewSearchClient() *intrusearch.Client {\n\topenSearchAddress := &quot;http:\/\/127.0.0.1&quot; \/\/ OpenSearch address\n\tawsSamLocal := true                     \/\/ is your environment development? (debug mode)\n\n\tclient := intrusearch.NewClient(openSearchAddress, awsSamLocal) \/\/ instance for creating a new OpenSearch client\n\n\treturn &amp;client\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Exemplo de pesquisa sem o IntruSearch:<\/h2>\n\n\n\n<p>Este \u00e9 um exemplo de pesquisa de \u00edndice sem o <strong>IntruSearch<\/strong>. O exemplo mostra como realizar uma pesquisa em um \u00edndice diretamente no <strong>OpenSearch<\/strong>, usando <strong>Go<\/strong>. A pesquisa \u00e9 feita enviando um pedido HTTP para a URL do <strong>OpenSearch<\/strong>, fornecendo o nome do \u00edndice e o corpo da pesquisa em formato JSON. Os resultados da pesquisa s\u00e3o analisados em uma estrutura de dados <code>SearchResult<\/code> que cont\u00e9m as fontes dos documentos que correspondem \u00e0 pesquisa.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\"><pre class=\"brush: go; title: ; notranslate\" title=\"\">\npackage main\n\nimport (\n\t&quot;context&quot;\n\t&quot;encoding\/json&quot;\n\t&quot;fmt&quot;\n\t&quot;net\/http&quot;\n\t&quot;strings&quot;\n)\n\ntype SearchResult struct {\n\tHits struct {\n\t\tHits &#x5B;]struct {\n\t\t\tSource json.RawMessage `json:&quot;_source&quot;`\n\t\t} `json:&quot;hits&quot;`\n\t} `json:&quot;hits&quot;`\n}\n\nfunc main() {\n\t\/\/ Set up connection configuration with OpenSearch\n\turl := &quot;http:\/\/localhost:9200&quot; \/\/ OpenSearch URL\n\tindexName := &quot;my-new-index&quot; \/\/ Name of the index to search in\n\tquery := &quot;search query&quot; \/\/ The search query\n\n\t\/\/ Create the request body for the search\n\trequestBody := fmt.Sprintf(`{\n\t\t&quot;query&quot;: {\n\t\t\t&quot;multi_match&quot;: {\n\t\t\t\t&quot;query&quot;: &quot;%s&quot;,\n\t\t\t\t&quot;fields&quot;: &#x5B;&quot;title&quot;, &quot;description&quot;]\n\t\t\t}\n\t\t}\n\t}`, query)\n\n\t\/\/ Make the HTTP request to search in the OpenSearch index\n\tresp, err := http.Post(fmt.Sprintf(&quot;%s\/%s\/_search&quot;, url, indexName), &quot;application\/json&quot;, strings.NewReader(requestBody))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tdefer resp.Body.Close()\n\n\t\/\/ Parse the response body into a SearchResult struct\n\tvar result SearchResult\n\terr = json.NewDecoder(resp.Body).Decode(&amp;result)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t\/\/ Print out the results\n\tfor _, hit := range result.Hits.Hits {\n\t\tfmt.Println(string(hit.Source))\n\t}\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Exemplo de pesquisa de \u00edndice com o IntruSearch:<\/h2>\n\n\n\n<p>Este segundo exemplo mostra como realizar a mesma pesquisa usando o <strong>IntruSearch<\/strong>. A pesquisa \u00e9 realizada atrav\u00e9s do m\u00e9todo <code>ClientSearchRequest<\/code> fornecido pelo pacote <code>intrusearch<\/code>. A pesquisa \u00e9 configurada para retornar resultados que correspondem a um determinado conte\u00fado usando a consulta <code>content:*any content*<\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\"><pre class=\"brush: go; title: ; notranslate\" title=\"\">\npackage main\n\nimport (\n\tintrusearch &quot;github.com\/intruderlabs\/intrusearch\/main&quot;\n\t&quot;github.com\/intruderlabs\/intrusearch\/main\/infrastructure\/requests&quot;\n    &quot;github.com\/intruderlabs\/intrusearch\/main\/infrastructure\/responses&quot;\n)\n\ntype SearchRequestExample struct {\n\tclient intrusearch.ClientInterface\n}\n\nfunc (itself SearchRequestExample) FindContent(content string) responses.OsResponse {\n\tprintln(&quot;initialize findContent to keyword search&quot;)\n\n\tresponse, _ := itself.client.ClientSearchRequest(requests.OsSearchRequest{\n\t\tFrom:        10,\n\t\tSize:        10,\n\t\tQueryString: &quot;content:*&quot; + content + &quot;*&quot;,\n\t})\n\n\treturn response\n}\n\nfunc main() {\n    search := SearchRequestExample{}\n    search.FindContent(&quot;any content&quot;)\n}\n<\/pre><\/div>\n\n\n<p>Se voc\u00ea est\u00e1 cansado de lidar com pesquisas manuais e quer otimizar seu fluxo de trabalho, o <strong>IntruSearch <\/strong>\u00e9 a solu\u00e7\u00e3o perfeita para voc\u00ea! <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/intruderlabs\/intrusearch\" data-type=\"URL\" data-id=\"https:\/\/github.com\/intruderlabs\/intrusearch\" target=\"_blank\">Clique aqui<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>J\u00e1 pensou em otimizar seus projetos em GO para OpenSearch? Quer seja iniciante, quer seja um profissional experiente com o IntruSearch voc\u00ea pode utilizar essa nova API para trabalhar de forma mais simplificada. Descubra os poderes dessa nova ferramenta.<\/p>","protected":false},"author":8,"featured_media":1052,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[29,32,31,33,30,27,28],"class_list":["post-1004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ferramentas","tag-api","tag-codigo","tag-desenvolvimento","tag-ferramenta","tag-go","tag-intrusearch","tag-opensearch"],"_links":{"self":[{"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/posts\/1004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/comments?post=1004"}],"version-history":[{"count":9,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/posts\/1004\/revisions"}],"predecessor-version":[{"id":1104,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/posts\/1004\/revisions\/1104"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/media\/1052"}],"wp:attachment":[{"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/media?parent=1004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/categories?post=1004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.intruderlabs.com.br\/en\/wp-json\/wp\/v2\/tags?post=1004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}