{"id":9620,"date":"2013-10-24T13:51:51","date_gmt":"2013-10-24T11:51:51","guid":{"rendered":"https:\/\/blog.trifork.com\/?p=9620"},"modified":"2013-10-24T13:51:51","modified_gmt":"2013-10-24T11:51:51","slug":"how-to-avoid-the-split-brain-problem-in-elasticsearch","status":"publish","type":"post","link":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/","title":{"rendered":"How to avoid the split-brain problem in elasticsearch"},"content":{"rendered":"<p><img decoding=\"async\" style=\"float: left;margin-right: 10px\" src=\"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png\" alt=\"Elasticsearch Logo\">We&#8217;ve all been there &#8211; we started to plan for an elasticsearch cluster and one of the first questions that comes up is &#8220;How many nodes should the cluster have?&#8221;. As I&#8217;m sure you already know, the answer to that question depends on a lot of factors, like expected load, data size, hardware etc. In this blog post I&#8217;m not going to go into the detail of how to size your cluster, but instead will talk about something equally important &#8211; how to avoid the split-brain problem.<\/p>\n<p><!--more--><\/p>\n<h2>What is split-brain?<\/h2>\n<p>Let&#8217;s take as an example a simple situation of en elasticsearch cluster with two nodes. The cluster holds a single index with one shard and one replica. Node 1 was elected as master at cluster start-up and holds the primary shard (marked as <strong>0P<\/strong> in the schema below), while Node 2 holds the replica shard (<strong>0R<\/strong>).<\/p>\n<p><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_ok.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"552\" height=\"340\" class=\"alignnone size-full wp-image-9650\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_ok.jpg\" alt=\"cluster_ok\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_ok.jpg 552w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_ok-300x185.jpg 300w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/a><\/p>\n<p>Now, what would happen if, for any reason, communication between the two nodes would fail? This could happen because of network failures or simply because one of the nodes becomes unresponsive (like in a case of a stop-the-world garbage collection).<\/p>\n<p><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_nok.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"548\" height=\"305\" class=\"alignnone size-full wp-image-9649\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_nok.jpg\" alt=\"cluster_nok\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_nok.jpg 548w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_nok-300x167.jpg 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/a><\/p>\n<p>Both nodes believe that the other has failed. Node 1 will do nothing, because it&#8217;s already elected as master. But Node 2 will automatically elect itself as master, because it believes it&#8217;s part of a cluster which does not have a master anymore. In an elasticsearch cluster, it&#8217;s the responsability of the master node to allocate the shards equally among the nodes. Node 2 holds a replica shard, but it believes that the primary shard is no longer available. Because of this it will automatically promote the replica shard to a primary.<\/p>\n<p><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_bad.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"312\" class=\"alignnone size-full wp-image-9648\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_bad.jpg\" alt=\"cluster_bad\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_bad.jpg 561w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/10\/cluster_bad-300x167.jpg 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/a><\/p>\n<p>Our cluster is now in an inconsistent state. Indexing requests that will hit Node 1 will index data in its copy of the primary shard, while the requests that go to Node 2 will fill the second copy of the shard. In this situation the two copies of the shard have diverged and it would be really difficult (if not impossible) to realign them without a full reindexing. Even worse, for a non-cluster aware indexing client (e.g. one using the REST interface) this problem will be totally transparent &#8211; indexing requests will be successfully completed every time, regardless of which node is called. The problem would only be slightly noticeable when searching for data: depending on the node the search request hits, results will differ.<\/p>\n<h2>How to avoid the split-brain problem<\/h2>\n<p>The elasticsearch configuration has excellent defaults. However the elasticsearch team can&#8217;t know in advance all the details of your particular situation. That is why some configuration parameters should be changed to suit your specific needs. All the parameters mentioned in this post can be changed in the <strong>elasticsearch.yml<\/strong> file, found in the <strong>config<\/strong> folder of your elasticsearch installation.<\/p>\n<p>For avoiding the split-brain situation, the first parameter we can look at is <strong>discovery.zen.minimum_master_nodes<\/strong>. This parameter determines how many nodes need to be in communication in order to elect a master. It&#8217;s default value is 1. The rule of thumb is that this should be set to N\/2 + 1, where N is the number of nodes in the cluster. For example in the case of a 3 node cluster, the minimum_master_nodes should be set to 3\/2 + 1 = 2 (rounding down to the nearest integer).<\/p>\n<p>Let&#8217;s imagine what would have happened in the case described above if we would had set the <strong>discovery.zen.minimum_master_nodes<\/strong> to 2 (2\/2 + 1). When the communication between the two nodes would have been lost, Node 1 would lose it&#8217;s master status while Node 2 would have never been elected as master. None of the nodes would accept indexing or search requests, making the problem immediately evident for all clients. Moreover none of the shards would be in an inconsistent state.<\/p>\n<p>Another parameter you could tweak is the <strong>discovery.zen.ping.timeout<\/strong>. It&#8217;s default value is 3 seconds and it determines how much time a node will wait for a response from other nodes in the cluster before assuming that the node has failed. Slightly increasing the default value is definitely a good idea in the case of a slower network. This parameter not only caters for higher network latency, but also helps in the case of a node that is slower to respond because of it being overloaded.<\/p>\n<h2>Two node cluster?<\/h2>\n<p>If you think that it&#8217;s wrong (or at least unintuitive) to set the minimum_master_nodes parameter to 2 in the case of a two node cluster, you are probably right. In this case the moment a node fails, the whole cluster fails. Although this removes the possibility of the split-brain occurring, it also negates one of the great features of elasticsearch &#8211; the built in high-availability mechanism through the usage of replica shards.<\/p>\n<p>If you&#8217;re just starting out with elasticsearch, the recommendation is to plan for a 3 node cluster. This way you can set the minimum_master_nodes to 2, limiting the chance of the split-brain problem, but still keeping the high availability advantage: if you configured replicas you can afford to lose a node but still keep the cluster up-and-running.<\/p>\n<p>But what if you&#8217;re already running a two-node elasticsearch cluster? You could chose to live with the possibility of the split-brain while keeping the high availability, or chose to avoid the split brain but lose the high availability. To avoid the compromise, the best option in this case is to add a node to the cluster. This sounds very drastic, but it doesn&#8217;t have to be. For each elasticsearch node you can chose if that node will hold data or not by setting the <strong>node.data<\/strong> parameter. The default value is &#8220;true&#8221;, meaning that by default every elasticsearch node will also be a data node.<\/p>\n<p>With a two-node cluster, you could add a new node to it for which the <strong>node.data<\/strong> parameter is set to &#8220;false&#8221;. This means that the node will never hold any shards, but it can be elected as master (default behavior). Because the new node is a data-less node, it can be started on less expensive hardware. Now you have a cluster of three nodes, can safely set the minimum_master_nodes to 2, avoiding the split-brain and still afford to lose a node without losing data.<\/p>\n<h2>In conclusion<\/h2>\n<p>The split-brain problem is apparently difficult to solve permanently. In elasticsearch&#8217;s issue tracker there is still an <a href=\"https:\/\/github.com\/elasticsearch\/elasticsearch\/issues\/2488\">open issue<\/a> about this, describing a corner case where even with a correct value of the minimum_master_nodes parameter the split-brain still occurred. The elasticsearch team is currently working on a better implementation of the master election algorithm, but if you are already running an elasticsearch cluster it&#8217;s important to be aware of this potential problem.<\/p>\n<p>It&#8217;s also very important to identify it as soon as possible. An easy way to detect that something is wrong is to schedule a check for the response of the <strong>\/_nodes<\/strong> endpoint for each node. This endpoint returns a short status report of all the nodes in the cluster. If two nodes are reporting a different composition of the cluster, it&#8217;s a telltale sign that a split-brain situation has occurred.<\/p>\n<p>If you have concerns regarding your your current elasticsearch configuration or would like some help starting a new elasticsearch project, we are always ready to help, just <a href=\"http:\/\/www.trifork.nl\/en\/home\/contact-us.html\">contact us<\/a>.<\/p>\n<p><i>Update: if you&#8217;re curious how Java clients behave in a split-brain situation, take a look at <a href=\"https:\/\/blog.trifork.com\/2013\/10\/31\/java-clients-behavior-during-creating-a-split-brain-situation-in-elasticsearch\/\">this blog post<\/a>.<\/i><\/p>\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/bit.ly\/3BAo305\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1024x256.png\" alt=\"\" class=\"wp-image-20303\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1024x256.png 1024w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-300x75.png 300w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-768x192.png 768w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1536x384.png 1536w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-2048x512.png 2048w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2022\/02\/Blog-Banner-1-1920x480.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;ve all been there &#8211; we started to plan for an elasticsearch cluster and one of the first questions that comes up is &#8220;How many nodes should the cluster have?&#8221;. As I&#8217;m sure you already know, the answer to that question depends on a lot of factors, like expected load, data size, hardware etc. In [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[15,65],"tags":[61],"class_list":["post-9620","post","type-post","status-publish","format-standard","hentry","category-enterprise-search","category-big_data_search","tag-elasticsearch"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to avoid the split-brain problem in elasticsearch - Trifork Blog<\/title>\n<meta name=\"description\" content=\"In this post I won&#039;t go into detail on how to size your elasticsearch cluster, but about something equally important \u2013 how to avoid the split-brain problem.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to avoid the split-brain problem in elasticsearch - Trifork Blog\" \/>\n<meta property=\"og:description\" content=\"In this post I won&#039;t go into detail on how to size your elasticsearch cluster, but about something equally important \u2013 how to avoid the split-brain problem.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/\" \/>\n<meta property=\"og:site_name\" content=\"Trifork Blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-10-24T11:51:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png\" \/>\n<meta name=\"author\" content=\"Bogdan Dumitrescu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bogdan Dumitrescu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/\",\"url\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/\",\"name\":\"How to avoid the split-brain problem in elasticsearch - Trifork Blog\",\"isPartOf\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png\",\"datePublished\":\"2013-10-24T11:51:51+00:00\",\"author\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/a36b4e415961c5622ef2ad16759e2610\"},\"description\":\"In this post I won't go into detail on how to size your elasticsearch cluster, but about something equally important \u2013 how to avoid the split-brain problem.\",\"breadcrumb\":{\"@id\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#primaryimage\",\"url\":\"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png\",\"contentUrl\":\"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/trifork.nl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to avoid the split-brain problem in elasticsearch\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/trifork.nl\/blog\/#website\",\"url\":\"https:\/\/trifork.nl\/blog\/\",\"name\":\"Trifork Blog\",\"description\":\"Keep updated on the technical solutions Trifork is working on!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/trifork.nl\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/a36b4e415961c5622ef2ad16759e2610\",\"name\":\"Bogdan Dumitrescu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1007e6833c484c4b41a774cf1724bb6a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1007e6833c484c4b41a774cf1724bb6a?s=96&d=mm&r=g\",\"caption\":\"Bogdan Dumitrescu\"},\"url\":\"https:\/\/trifork.nl\/blog\/author\/bogdan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to avoid the split-brain problem in elasticsearch - Trifork Blog","description":"In this post I won't go into detail on how to size your elasticsearch cluster, but about something equally important \u2013 how to avoid the split-brain problem.","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:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/","og_locale":"en_US","og_type":"article","og_title":"How to avoid the split-brain problem in elasticsearch - Trifork Blog","og_description":"In this post I won't go into detail on how to size your elasticsearch cluster, but about something equally important \u2013 how to avoid the split-brain problem.","og_url":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/","og_site_name":"Trifork Blog","article_published_time":"2013-10-24T11:51:51+00:00","og_image":[{"url":"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png","type":"","width":"","height":""}],"author":"Bogdan Dumitrescu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bogdan Dumitrescu","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/","url":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/","name":"How to avoid the split-brain problem in elasticsearch - Trifork Blog","isPartOf":{"@id":"https:\/\/trifork.nl\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#primaryimage"},"image":{"@id":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#primaryimage"},"thumbnailUrl":"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png","datePublished":"2013-10-24T11:51:51+00:00","author":{"@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/a36b4e415961c5622ef2ad16759e2610"},"description":"In this post I won't go into detail on how to size your elasticsearch cluster, but about something equally important \u2013 how to avoid the split-brain problem.","breadcrumb":{"@id":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#primaryimage","url":"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png","contentUrl":"http:\/\/www.trifork.nl\/dms\/solutions\/elasticsearch.png"},{"@type":"BreadcrumbList","@id":"https:\/\/trifork.nl\/blog\/how-to-avoid-the-split-brain-problem-in-elasticsearch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/trifork.nl\/blog\/"},{"@type":"ListItem","position":2,"name":"How to avoid the split-brain problem in elasticsearch"}]},{"@type":"WebSite","@id":"https:\/\/trifork.nl\/blog\/#website","url":"https:\/\/trifork.nl\/blog\/","name":"Trifork Blog","description":"Keep updated on the technical solutions Trifork is working on!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/trifork.nl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/a36b4e415961c5622ef2ad16759e2610","name":"Bogdan Dumitrescu","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1007e6833c484c4b41a774cf1724bb6a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1007e6833c484c4b41a774cf1724bb6a?s=96&d=mm&r=g","caption":"Bogdan Dumitrescu"},"url":"https:\/\/trifork.nl\/blog\/author\/bogdan\/"}]}},"_links":{"self":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/9620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/comments?post=9620"}],"version-history":[{"count":0,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/9620\/revisions"}],"wp:attachment":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/media?parent=9620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/categories?post=9620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/tags?post=9620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}