{"id":9745,"date":"2023-01-26T16:15:08","date_gmt":"2023-01-26T21:15:08","guid":{"rendered":"https:\/\/www.rushworth.us\/lisa\/?p=9745"},"modified":"2023-01-27T15:55:00","modified_gmt":"2023-01-27T20:55:00","slug":"visualizing-geoip-information-in-kibana","status":"publish","type":"post","link":"https:\/\/www.rushworth.us\/lisa\/?p=9745","title":{"rendered":"Visualizing GeoIP Information in Kibana"},"content":{"rendered":"<p>Before we can use map details in Kibana visualizations, we need to add fields with the geographic information. The first few steps are something the ELK admin staff will need to do in order to map source and\/or destination IPs to geographic information.<\/p>\n<p>First update the relevant index template to map the location information into geo-point fields \u2013 load this JSON (but, first, make sure there aren\u2019t <em>existing<\/em> mappings otherwise you\u2019ll need to merge the existing JSON in with the new elements for geoip_src and geoip_dst<\/p>\n<pre>{\r\n  \"_doc\": {\r\n    \"_meta\": {},\r\n    \"_source\": {},\r\n    \"properties\": {\r\n      \"geoip_dst\": {\r\n        \"dynamic\": true,\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"ip\": {\r\n            \"type\": \"ip\"\r\n          },\r\n          \"latitude\": {\r\n            \"type\": \"half_float\"\r\n          },\r\n          \"location\": {\r\n            \"type\": \"geo_point\"\r\n          },\r\n          \"longitude\": {\r\n            \"type\": \"half_float\"\r\n          }\r\n        }\r\n      },\r\n      \"geoip_src\": {\r\n        \"dynamic\": true,\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"ip\": {\r\n            \"type\": \"ip\"\r\n          },\r\n          \"latitude\": {\r\n            \"type\": \"half_float\"\r\n          },\r\n          \"location\": {\r\n            \"type\": \"geo_point\"\r\n          },\r\n          \"longitude\": {\r\n            \"type\": \"half_float\"\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n}<\/pre>\n<p>First, click on the index template name to view the settings. Click to the \u2018mappings\u2019 tab and copy what is in there<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"563\" class=\"wp-image-9746\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-1.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-1.png 490w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-1-261x300.png 261w\" sizes=\"auto, (max-width: 490px) 100vw, 490px\" \/><\/p>\n<p>Munge in the two \u2018properties\u2019 in the above JSON. Edit the index template<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1100\" height=\"453\" class=\"wp-image-9747\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-2.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-2.png 1100w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-2-300x124.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-2-1024x422.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-2-768x316.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-2-750x309.png 750w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Click to the \u201cMappings\u201d section and use \u201cLoad JSON\u201d to import the new mapping configuration<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1076\" height=\"380\" class=\"wp-image-9748\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-3.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-3.png 1076w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-3-300x106.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-3-1024x362.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-3-768x271.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-3-750x265.png 750w\" sizes=\"auto, (max-width: 1076px) 100vw, 1076px\" \/><\/p>\n<p>Paste in your JSON &amp; click to \u201cLoad &amp; Overwrite\u201d<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"487\" class=\"wp-image-9749\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-4.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-4.png 629w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-4-300x232.png 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/p>\n<p>Voila \u2013 you will have geo-point items in the template.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"462\" height=\"467\" class=\"wp-image-9750\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-5.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-5.png 462w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-5-297x300.png 297w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><\/p>\n<p>Next, the logstash pipeline needs to be configured to enrich log records with geoip information. There is a <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-geoip.html\">geoip filter available, which uses the MaxMind GeoIP database<\/a> (this is <a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-geoip.html#plugins-filters-geoip-database_auto\">refreshed automatically<\/a>; currently, we do not merge in any geoip information for the private network address spaces) . You just need to indicate what field(s) have the IP address and where the location information should be stored. You can have multiple geographic IP fields \u2013 in this example, we map both source and destination IP addresses.<\/p>\n<pre>        geoip {\r\n                source =&gt; \"src_ip\"\r\n                target =&gt; \"geoip_src\"\r\n                add_field =&gt; [ \"[geoip][location]\", \"%{[geoip][longitude]}\" ]\r\n                add_field =&gt; [ \"[geoip][location]\", \"%{[geoip][latitude]}\"  ]\r\n        }\r\n        geoip {\r\n                source =&gt; \"dst_ip\"\r\n                target =&gt; \"geoip_dest\"\r\n                add_field =&gt; [ \"[geoip][location]\", \"%{[geoip][longitude]}\" ]\r\n                add_field =&gt; [ \"[geoip][location]\", \"%{[geoip][latitude]}\"  ]\r\n        }<\/pre>\n<p>E.G.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"784\" height=\"643\" class=\"wp-image-9751\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-6.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-6.png 784w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-6-300x246.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-6-768x630.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-6-750x615.png 750w\" sizes=\"auto, (max-width: 784px) 100vw, 784px\" \/><\/p>\n<p>One logstash is restarted, the documents stored in Kibana will have geoip_src and geoip_dest fields:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1057\" height=\"182\" class=\"wp-image-9752\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-7.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-7.png 1057w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-7-300x52.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-7-1024x176.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-7-768x132.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-7-750x129.png 750w\" sizes=\"auto, (max-width: 1057px) 100vw, 1057px\" \/><\/p>\n<p>Once relevant data is being stored, use the refresh-looking button on the index pattern(s) to refresh the field list from stored data. This will add the geo-point items into the index pattern.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1081\" height=\"367\" class=\"wp-image-9753\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-8.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-8.png 1081w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-8-300x102.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-8-1024x348.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-8-768x261.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-8-750x255.png 750w\" sizes=\"auto, (max-width: 1081px) 100vw, 1081px\" \/><\/p>\n<p>Once GeoIP information is available in the index pattern, select the \u201cMaps\u201d visualization<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"480\" class=\"wp-image-9754\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-9.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-9.png 816w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-9-300x176.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-9-768x452.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-9-750x441.png 750w\" sizes=\"auto, (max-width: 816px) 100vw, 816px\" \/><\/p>\n<p>Leave the road map layer there (otherwise you won\u2019t see the countries!)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"237\" class=\"wp-image-9755\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-10.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-10.png 329w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-10-300x216.png 300w\" sizes=\"auto, (max-width: 329px) 100vw, 329px\" \/><\/p>\n<p>Select \u2018Documents\u2019 as the data source to link in ElasticSearch data<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"419\" height=\"469\" class=\"wp-image-9756\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-11.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-11.png 419w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-11-268x300.png 268w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><\/p>\n<p>Select the index pattern that contains your data source (if your index pattern does not appear, then Kibana doesn\u2019t recognize the pattern as containing geographic fields \u2026 I\u2019ve had to delete and recreate my index pattern so the geographic fields were properly mapped).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"423\" height=\"323\" class=\"wp-image-9757\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-12.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-12.png 423w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-12-300x229.png 300w\" sizes=\"auto, (max-width: 423px) 100vw, 423px\" \/><\/p>\n<p>And select the field(s) that contain geographic details:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"425\" height=\"430\" class=\"wp-image-9758\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-13.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-13.png 425w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-13-297x300.png 297w\" sizes=\"auto, (max-width: 425px) 100vw, 425px\" \/><\/p>\n<p>You can name the layer<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"408\" height=\"219\" class=\"wp-image-9759\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-14.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-14.png 408w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-14-300x161.png 300w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><\/p>\n<p>And add a tool tip that will include the country code or name<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"199\" class=\"wp-image-9760\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-15.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-15.png 412w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-15-300x145.png 300w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/p>\n<p>Under \u201cTerm joins\u201d, add a new join. Click on \u201cJoin &#8211;select&#8211;\u201d to link a field from the map to a field in your dataset.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"58\" class=\"wp-image-9761\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-16.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-16.png 385w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-16-300x45.png 300w\" sizes=\"auto, (max-width: 385px) 100vw, 385px\" \/><\/p>\n<p>In this case, I am joining the two-character country codes &#8212;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"339\" height=\"459\" class=\"wp-image-9762\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-17.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-17.png 339w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-17-222x300.png 222w\" sizes=\"auto, (max-width: 339px) 100vw, 339px\" \/><\/p>\n<p>Normally, you can leave the \u201cand use metric count\u201d in place (the map is color coded by the number of requests coming from each country). If you want to add a filter, you can click the \u201cwhere &#8212; add filter &#8211;&#8221; link to edit the filter.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"191\" class=\"wp-image-9763\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-18.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-18.png 403w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-18-300x142.png 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/p>\n<p>In this example, I don\u2019t want to filter the data, so I\u2019ve left that at the default.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"268\" class=\"wp-image-9764\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-19.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-19.png 412w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-19-300x195.png 300w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/p>\n<p>Click \u201cSave &amp; close\u201d to save the changes to the map visualization. To view your map, you won\u2019t find it under Visualizations \u2013 instead, click \u201cMaps\u201d along the left-hand navigation menu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"259\" height=\"428\" class=\"wp-image-9765\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-20.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-20.png 259w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-20-182x300.png 182w\" sizes=\"auto, (max-width: 259px) 100vw, 259px\" \/><\/p>\n<p>Voila \u2013 a map where the shading on a country gets darker the more requests have come from the country.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1322\" height=\"590\" class=\"wp-image-9766\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-21.png\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-21.png 1322w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-21-300x134.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-21-1024x457.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-21-768x343.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2023\/01\/word-image-9745-21-750x335.png 750w\" sizes=\"auto, (max-width: 1322px) 100vw, 1322px\" \/><\/p>\n<p><strong>Internal Addresses<\/strong><\/p>\n<p>If we want to (and if we have information to map IP subnets to City\/State\/Zip\/LatLong, etc), we <em>can<\/em> edit the database used for GeoIP mappings &#8212; <a href=\"https:\/\/github.com\/maxmind\/getting-started-with-mmdb\">https:\/\/github.com\/maxmind\/getting-started-with-mmdb<\/a> provides a perl module that interacts with the database file. That isn\u2019t currently done, so internal servers where traffic is sourced primarily from private address spaces won\u2019t have particularly thrilling map data.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before we can use map details in Kibana visualizations, we need to add fields with the geographic information. The first few steps are something the ELK admin staff will need to do in order to map source and\/or destination IPs to geographic information. First update the relevant index template to map the location information into &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1588],"tags":[1589,1800,1591,1643],"class_list":["post-9745","post","type-post","status-publish","format-standard","hentry","category-elk","tag-elk","tag-geoip","tag-kibana","tag-logstash"],"_links":{"self":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9745"}],"version-history":[{"count":2,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9745\/revisions"}],"predecessor-version":[{"id":9768,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9745\/revisions\/9768"}],"wp:attachment":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9745"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9745"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}