{"id":6053,"date":"2018-11-29T06:55:01","date_gmt":"2018-11-29T14:55:01","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6053"},"modified":"2023-07-26T11:24:29","modified_gmt":"2023-07-26T18:24:29","slug":"how-to-log-queries-generated-by-spring-data","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/","title":{"rendered":"How to log queries generated by Spring Data"},"content":{"rendered":"<p>One of the ways to improve your application performance in Couchbase is to create indexes for common queries. However, when you are working with Spring Data using its standard DSL, the generated query is not very clear, which makes a little bit more difficult to create the right index to it.<\/p>\n<p>This problem can be easily solved by enabling <strong>DEBUG<\/strong> log level in the class <strong>AbstractN1qlBasedQuery<\/strong>, it will print the generated <strong>N1QL<\/strong> query in the log, a behavior very similar to enabling the attribute <strong>show_sql <\/strong>in Hibernate. \u00a0Here is how you can set this configuration in your <strong>application.yml<\/strong><\/p>\n<pre class=\"lang:yaml decode:true \">logging:\r\n   level:\r\n     org.springframework.data.couchbase.repository.query: DEBUG<\/pre>\n<p>You can also enable it via <strong><a href=\"https:\/\/logback.qos.ch\/\">logback<\/a><\/strong><a href=\"https:\/\/logback.qos.ch\/\">\u00a0<\/a>\u00a0by simply adding it as a dependency:<\/p>\n<pre class=\"lang:xhtml decode:true \">        &lt;dependency&gt;\r\n            &lt;groupId&gt;ch.qos.logback&lt;\/groupId&gt;\r\n            &lt;artifactId&gt;logback-classic&lt;\/artifactId&gt;\r\n            &lt;version&gt;1.2.3&lt;\/version&gt;\r\n        &lt;\/dependency&gt;<\/pre>\n<p>And then, add the <strong>logback.xml<\/strong> configuration file in your resources folder:<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;configuration&gt;\r\n    &lt;appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\"&gt;\r\n        &lt;encoder&gt;\r\n            &lt;pattern&gt;%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n&lt;\/pattern&gt;\r\n        &lt;\/encoder&gt;\r\n    &lt;\/appender&gt;\r\n\r\n    &lt;logger name=\"org.springframework.data.couchbase.repository.query\" level=\"debug\" \/&gt;\r\n\r\n    &lt;root level=\"info\"&gt;\r\n        &lt;appender-ref ref=\"STDOUT\" \/&gt;\r\n    &lt;\/root&gt;\r\n&lt;\/configuration&gt;<\/pre>\n<p>When you run your application again, the generated N1QL queries will be printed in the logs.<\/p>\n<pre class=\"lang:default decode:true \">2018-11-29 14:31:25.999 DEBUG 33427 --- [           main] o.s.d.c.r.query.AbstractN1qlBasedQuery   : Executing N1QL query: {\"statement\":\"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` WHERE (`username` = \\\"myuser\\\") AND `_class` = \\\"com.bc.test.standalone.model.User\\\"\",\"scan_consistency\":\"statement_plus\"}\r\n2018-11-29 14:31:26.079 DEBUG 33427 --- [           main] o.s.d.c.r.query.AbstractN1qlBasedQuery   : Executing N1QL query: {\"args\":[\"company--1\",\"userId--1\"],\"statement\":\"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` where `_class` = \\\"com.bc.test.standalone.model.SecurityGroup\\\" and companyId = $1 and removed = false  AND ARRAY_CONTAINS(users, $2) \",\"scan_consistency\":\"statement_plus\"}\r\n2018-11-29 14:31:26.186 DEBUG 33427 --- [           main] o.s.d.c.r.query.AbstractN1qlBasedQuery   : Executing N1QL query: {\"args\":[\"area--1\",\"company--1\"],\"statement\":\"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` where `_class` = \\\"com.bc.test.standalone.model.BusinessUnity\\\" and companyId = $2 and $1 within `test`\",\"scan_consistency\":\"statement_plus\"}\r\n2018-11-29 14:31:26.827 DEBUG 33427 --- [           main] o.s.d.c.r.query.AbstractN1qlBasedQuery   : Executing N1QL query: {\"statement\":\"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` WHERE (`companyId` = \\\"company--1\\\" AND `removed` = false AND `familyId` = \\\"famillyrsc--FamiliaTeste\\\") AND `_class` = \\\"com.bc.test.standalone.model.MaintenancePlan\\\"\",\"scan_consistency\":\"statement_plus\"}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>If you have any questions, ping me at <a href=\"https:\/\/twitter.com\/deniswsrosa\">@deniswsrosa<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of the ways to improve your application performance in Couchbase is to create indexes for common queries. However, when you are working with Spring Data using its standard DSL, the generated query is not very clear, which makes a [&hellip;]<\/p>\n","protected":false},"author":8754,"featured_media":6054,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1818],"tags":[1630,1465],"ppma_author":[9059],"class_list":["post-6053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-spring-boot","tag-spring-data"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Spring Data Log Queries: How to Set Your Configuration<\/title>\n<meta name=\"description\" content=\"When working with Spring Data using its standard DSL, the generated query is not very clear, which makes it more difficult to create the right index to it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to log queries generated by Spring Data\" \/>\n<meta property=\"og:description\" content=\"When working with Spring Data using its standard DSL, the generated query is not very clear, which makes it more difficult to create the right index to it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-29T14:55:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-26T18:24:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/Show-SQL-Couchbase-banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"728\" \/>\n\t<meta property=\"og:image:height\" content=\"210\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@deniswsrosa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\"},\"author\":{\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\"},\"headline\":\"How to log queries generated by Spring Data\",\"datePublished\":\"2018-11-29T14:55:01+00:00\",\"dateModified\":\"2023-07-26T18:24:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\"},\"wordCount\":165,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png\",\"keywords\":[\"spring-boot\",\"spring-data\"],\"articleSection\":[\"Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\",\"name\":\"Spring Data Log Queries: How to Set Your Configuration\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png\",\"datePublished\":\"2018-11-29T14:55:01+00:00\",\"dateModified\":\"2023-07-26T18:24:29+00:00\",\"description\":\"When working with Spring Data using its standard DSL, the generated query is not very clear, which makes it more difficult to create the right index to it.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png\",\"width\":728,\"height\":210},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to log queries generated by Spring Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\",\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"caption\":\"Denis Rosa, Developer Advocate, Couchbase\"},\"description\":\"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.\",\"sameAs\":[\"https:\/\/x.com\/deniswsrosa\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/denis-rosa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Spring Data Log Queries: How to Set Your Configuration","description":"When working with Spring Data using its standard DSL, the generated query is not very clear, which makes it more difficult to create the right index to it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/","og_locale":"en_US","og_type":"article","og_title":"How to log queries generated by Spring Data","og_description":"When working with Spring Data using its standard DSL, the generated query is not very clear, which makes it more difficult to create the right index to it.","og_url":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-11-29T14:55:01+00:00","article_modified_time":"2023-07-26T18:24:29+00:00","og_image":[{"width":728,"height":210,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/Show-SQL-Couchbase-banner.png","type":"image\/png"}],"author":"Denis Rosa, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@deniswsrosa","twitter_misc":{"Written by":"Denis Rosa, Developer Advocate, Couchbase","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/"},"author":{"name":"Denis Rosa, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257"},"headline":"How to log queries generated by Spring Data","datePublished":"2018-11-29T14:55:01+00:00","dateModified":"2023-07-26T18:24:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/"},"wordCount":165,"commentCount":6,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png","keywords":["spring-boot","spring-data"],"articleSection":["Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/","url":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/","name":"Spring Data Log Queries: How to Set Your Configuration","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png","datePublished":"2018-11-29T14:55:01+00:00","dateModified":"2023-07-26T18:24:29+00:00","description":"When working with Spring Data using its standard DSL, the generated query is not very clear, which makes it more difficult to create the right index to it.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/Show-SQL-Couchbase-banner.png","width":728,"height":210},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/how-to-log-queries-generated-by-spring-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to log queries generated by Spring Data"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257","name":"Denis Rosa, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6","url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","caption":"Denis Rosa, Developer Advocate, Couchbase"},"description":"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.","sameAs":["https:\/\/x.com\/deniswsrosa"],"url":"https:\/\/www.couchbase.com\/blog\/author\/denis-rosa\/"}]}},"authors":[{"term_id":9059,"user_id":8754,"is_guest":0,"slug":"denis-rosa","display_name":"Denis Rosa, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","author_category":"","last_name":"Rosa, Developer Advocate, Couchbase","first_name":"Denis","job_title":"","user_url":"","description":"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/8754"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=6053"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6053\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/6054"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=6053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=6053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=6053"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=6053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}