Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X3���usage of pids provided by a specified rights holderqNX���requirementsqNX���statistics service usageqNX���data uploadsq	NX ���metacat usage statistics serviceq
NX���overviewqNX���results filteringqNX���statistics service solr indexq
NX���data downloadsqNX���unresolved issues/questionsqNX���provided statisticsqNX���performanceqNX���results aggregationqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU
decorationqNUautofootnote_startqKUnameidsq}q(hU3usage-of-pids-provided-by-a-specified-rights-holderqhUrequirementsqhUstatistics-service-usageqh	Udata-uploadsqh
U metacat-usage-statistics-serviceq hUoverviewq!hUresults-filteringq"h
Ustatistics-service-solr-indexq#hUdata-downloadsq$hUunresolved-issues-questionsq%hUprovided-statisticsq&hUperformanceq'hUresults-aggregationq(uUchildrenq)]q*(cdocutils.nodes
comment
q+)Åq,}q-(U	rawsourceq.X¡���@startuml images/stats-activity-diagram.png
  (*) --> "Initialize event log timer"
  --> "read an event_log entry"
      --> "read system metadata"
      --> "write to stats Solr index"
@endumlUparentq/hUsourceq0X`���/var/lib/jenkins/jobs/metacat-unstable/workspace/docs/user/metacat/source/statistics-service.rstq1Utagnameq2Ucommentq3U
attributesq4}q5(U	xml:spaceq6Upreserveq7Uidsq8]Ubackrefsq9]Udupnamesq:]Uclassesq;]Unamesq<]uUlineq=K	Udocumentq>hh)]q?cdocutils.nodes
Text
q@X¡���@startuml images/stats-activity-diagram.png
  (*) --> "Initialize event log timer"
  --> "read an event_log entry"
      --> "read system metadata"
      --> "write to stats Solr index"
@endumlqAÖÅqB}qC(h.U�h/h,ubaubh+)ÅqD}qE(h.X⁄��@startuml images/stats-query-sequence-diagram.png
      participant client
      client -> MNRestServlet : doGet(request)
      activate MNRestServlet
      MNRestServlet -> MNResourceHandler: handle(get)
      activate MNResourceHandler
      MNResourceHandler -> MNResourceHandler: doQuery(engine, query)
      MNResourceHandler -> MNodeService: query(engine, query)
      activate MNodeService
      MNodeService -> StatsQueryService: query(query, subjects)
      activate StatsQueryService
      StatsQueryService -> SolrServer: query(query)
      activate SolrServer
      SolrServer -> StatsQueryService: inputstream
      deactivate SolrServer
      StatsQueryService -> MNodeService: inputstream
      deactivate StatsQueryService
      MNodeService -> MNResourceHandler: inputstream
      deactivate MNodeService
      MNResourceHandler -> MNRestServlet: response
      deactivate MNResourceHandler
      MNRestServlet -> client: response
      deactivate MNRestServlet
@endumlh/hh0h1h2h3h4}qF(h6h7h8]h9]h:]h;]h<]uh=K$h>hh)]qGh@X⁄��@startuml images/stats-query-sequence-diagram.png
      participant client
      client -> MNRestServlet : doGet(request)
      activate MNRestServlet
      MNRestServlet -> MNResourceHandler: handle(get)
      activate MNResourceHandler
      MNResourceHandler -> MNResourceHandler: doQuery(engine, query)
      MNResourceHandler -> MNodeService: query(engine, query)
      activate MNodeService
      MNodeService -> StatsQueryService: query(query, subjects)
      activate StatsQueryService
      StatsQueryService -> SolrServer: query(query)
      activate SolrServer
      SolrServer -> StatsQueryService: inputstream
      deactivate SolrServer
      StatsQueryService -> MNodeService: inputstream
      deactivate StatsQueryService
      MNodeService -> MNResourceHandler: inputstream
      deactivate MNodeService
      MNResourceHandler -> MNRestServlet: response
      deactivate MNResourceHandler
      MNRestServlet -> client: response
      deactivate MNRestServlet
@endumlqHÖÅqI}qJ(h.U�h/hDubaubcdocutils.nodes
section
qK)ÅqL}qM(h.U�h/hh0h1h2UsectionqNh4}qO(h:]h;]h9]h8]qPh ah<]qQh
auh=K&h>hh)]qR(cdocutils.nodes
title
qS)ÅqT}qU(h.X ���Metacat Usage Statistics ServiceqVh/hLh0h1h2UtitleqWh4}qX(h:]h;]h9]h8]h<]uh=K&h>hh)]qYh@X ���Metacat Usage Statistics ServiceqZÖÅq[}q\(h.hVh/hTubaubhK)Åq]}q^(h.U�h/hLh0h1h2hNh4}q_(h:]h;]h9]h8]q`h!ah<]qahauh=K)h>hh)]qb(hS)Åqc}qd(h.X���Overviewqeh/h]h0h1h2hWh4}qf(h:]h;]h9]h8]h<]uh=K)h>hh)]qgh@X���OverviewqhÖÅqi}qj(h.heh/hcubaubcdocutils.nodes
paragraph
qk)Åql}qm(h.XH���This document describes a proposed usage statistics service for Metacat.qnh/h]h0h1h2U	paragraphqoh4}qp(h:]h;]h9]h8]h<]uh=K*h>hh)]qqh@XH���This document describes a proposed usage statistics service for Metacat.qrÖÅqs}qt(h.hnh/hlubaubhk)Åqu}qv(h.Xi���This new service will provide Metacat usage information to clients about data and metacata access events.qwh/h]h0h1h2hoh4}qx(h:]h;]h9]h8]h<]uh=K,h>hh)]qyh@Xi���This new service will provide Metacat usage information to clients about data and metacata access events.qzÖÅq{}q|(h.hwh/huubaubeubhK)Åq}}q~(h.U�h/hLh0h1h2hNh4}q(h:]h;]h9]h8]qÄhah<]qÅhauh=K0h>hh)]qÇ(hS)ÅqÉ}qÑ(h.X���RequirementsqÖh/h}h0h1h2hWh4}qÜ(h:]h;]h9]h8]h<]uh=K0h>hh)]qáh@X���RequirementsqàÖÅqâ}qä(h.hÖh/hÉubaubhk)Åqã}qå(h.XÇ���The statistics service should have an easy to learn API that allows for query fields to be added
and provide reports in XML, JSON.qçh/h}h0h1h2hoh4}qé(h:]h;]h9]h8]h<]uh=K2h>hh)]qèh@XÇ���The statistics service should have an easy to learn API that allows for query fields to be added
and provide reports in XML, JSON.qêÖÅqë}qí(h.hçh/hãubaubhK)Åqì}qî(h.U�h/h}h0h1h2hNh4}qï(h:]h;]h9]h8]qñh&ah<]qóhauh=K6h>hh)]qò(hS)Åqô}qö(h.X���Provided Statisticsqõh/hìh0h1h2hWh4}qú(h:]h;]h9]h8]h<]uh=K6h>hh)]qùh@X���Provided StatisticsqûÖÅqü}q†(h.hõh/hôubaubhk)Åq°}q¢(h.X2���The service will include the following statistics:q£h/hìh0h1h2hoh4}q§(h:]h;]h9]h8]h<]uh=K8h>hh)]q•h@X2���The service will include the following statistics:q¶ÖÅqß}q®(h.h£h/h°ubaubcdocutils.nodes
block_quote
q©)Åq™}q´(h.U�h/hìh0Nh2Ublock_quoteq¨h4}q≠(h:]h;]h9]h8]h<]uh=Nh>hh)]qÆcdocutils.nodes
bullet_list
qØ)Åq∞}q±(h.U�h4}q≤(Ubulletq≥X���*h8]h9]h:]h;]h<]uh/h™h)]q¥(cdocutils.nodes
list_item
qµ)Åq∂}q∑(h.X
���Dataset viewsq∏h4}qπ(h:]h;]h9]h8]h<]uh/h∞h)]q∫hk)Åqª}qº(h.h∏h/h∂h0h1h2hoh4}qΩ(h:]h;]h9]h8]h<]uh=K:h)]qæh@X
���Dataset viewsqøÖÅq¿}q¡(h.h∏h/hªubaubah2U	list_itemq¬ubhµ)Åq√}qƒ(h.X���Package downloadsq≈h4}q∆(h:]h;]h9]h8]h<]uh/h∞h)]q«hk)Åq»}q…(h.h≈h/h√h0h1h2hoh4}q (h:]h;]h9]h8]h<]uh=K;h)]qÀh@X���Package downloadsqÃÖÅqÕ}qŒ(h.h≈h/h»ubaubah2h¬ubhµ)Åqœ}q–(h.X"���Size in bytes of package downloadsq—h4}q“(h:]h;]h9]h8]h<]uh/h∞h)]q”hk)Åq‘}q’(h.h—h/hœh0h1h2hoh4}q÷(h:]h;]h9]h8]h<]uh=K<h)]q◊h@X"���Size in bytes of package downloadsqÿÖÅqŸ}q⁄(h.h—h/h‘ubaubah2h¬ubhµ)Åq€}q‹(h.X
���Citations
h4}q›(h:]h;]h9]h8]h<]uh/h∞h)]qfihk)Åqfl}q‡(h.X	���Citationsq·h/h€h0h1h2hoh4}q‚(h:]h;]h9]h8]h<]uh=K=h)]q„h@X	���Citationsq‰ÖÅqÂ}qÊ(h.h·h/hflubaubah2h¬ubeh2Ubullet_listqÁubaubeubhK)ÅqË}qÈ(h.U�h/h}h0h1h2hNh4}qÍ(h:]h;]h9]h8]qÎh"ah<]qÏhauh=K@h>hh)]qÌ(hS)ÅqÓ}qÔ(h.X���Results Filteringqh/hËh0h1h2hWh4}qÒ(h:]h;]h9]h8]h<]uh=K@h>hh)]qÚh@X���Results FilteringqÛÖÅqÙ}qı(h.hh/hÓubaubhk)Åqˆ}q˜(h.XT���Reports returned by the service must be able to be filtered by the following fields:q¯h/hËh0h1h2hoh4}q˘(h:]h;]h9]h8]h<]uh=KBh>hh)]q˙h@XT���Reports returned by the service must be able to be filtered by the following fields:q˚ÖÅq¸}q˝(h.h¯h/hˆubaubh©)Åq˛}qˇ(h.U�h/hËh0Nh2h¨h4}r���(h:]h;]h9]h8]h<]uh=Nh>hh)]r��hØ)År��}r��(h.U�h4}r��(h≥X���*h8]h9]h:]h;]h<]uh/h˛h)]r��(hµ)År��}r��(h.X���A PID or list of PIDsr��h4}r	��(h:]h;]h9]h8]h<]uh/j��h)]r
��hk)År��}r��(h.j��h/j��h0h1h2hoh4}r
��(h:]h;]h9]h8]h<]uh=KDh)]r��h@X���A PID or list of PIDsr��ÖÅr��}r��(h.j��h/j��ubaubah2h¬ubhµ)År��}r��(h.XN���Creator or list of creators (DN, or ORCID, or some amalgam -- to be discussed)r��h4}r��(h:]h;]h9]h8]h<]uh/j��h)]r��hk)År��}r��(h.j��h/j��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=KEh)]r��h@XN���Creator or list of creators (DN, or ORCID, or some amalgam -- to be discussed)r��ÖÅr��}r��(h.j��h/j��ubaubah2h¬ubhµ)År��}r��(h.X5���A time range of access event (upload, download, etc.)r ��h4}r!��(h:]h;]h9]h8]h<]uh/j��h)]r"��hk)År#��}r$��(h.j ��h/j��h0h1h2hoh4}r%��(h:]h;]h9]h8]h<]uh=KFh)]r&��h@X5���A time range of access event (upload, download, etc.)r'��ÖÅr(��}r)��(h.j ��h/j#��ubaubah2h¬ubhµ)År*��}r+��(h.X9���Spatial location of access event (upload, download, etc.)r,��h4}r-��(h:]h;]h9]h8]h<]uh/j��h)]r.��hk)År/��}r0��(h.j,��h/j*��h0h1h2hoh4}r1��(h:]h;]h9]h8]h<]uh=KGh)]r2��h@X9���Spatial location of access event (upload, download, etc.)r3��ÖÅr4��}r5��(h.j,��h/j/��ubaubah2h¬ubhµ)År6��}r7��(h.X
���IP Addressr8��h4}r9��(h:]h;]h9]h8]h<]uh/j��h)]r:��hk)År;��}r<��(h.j8��h/j6��h0h1h2hoh4}r=��(h:]h;]h9]h8]h<]uh=KHh)]r>��h@X
���IP Addressr?��ÖÅr@��}rA��(h.j8��h/j;��ubaubah2h¬ubhµ)ÅrB��}rC��(h.X\���Accessor or list of accessors (DN, or ORCID, or some amalgam, needs ACL -- to be discussed)
h4}rD��(h:]h;]h9]h8]h<]uh/j��h)]rE��hk)ÅrF��}rG��(h.X[���Accessor or list of accessors (DN, or ORCID, or some amalgam, needs ACL -- to be discussed)rH��h/jB��h0h1h2hoh4}rI��(h:]h;]h9]h8]h<]uh=KIh)]rJ��h@X[���Accessor or list of accessors (DN, or ORCID, or some amalgam, needs ACL -- to be discussed)rK��ÖÅrL��}rM��(h.jH��h/jF��ubaubah2h¬ubeh2hÁubaubeubhK)ÅrN��}rO��(h.U�h/h}h0h1h2hNh4}rP��(h:]h;]h9]h8]rQ��h(ah<]rR��hauh=KLh>hh)]rS��(hS)ÅrT��}rU��(h.X���Results AggregationrV��h/jN��h0h1h2hWh4}rW��(h:]h;]h9]h8]h<]uh=KLh>hh)]rX��h@X���Results AggregationrY��ÖÅrZ��}r[��(h.jV��h/jT��ubaubcdocutils.nodes
definition_list
r\��)År]��}r^��(h.U�h/jN��h0Nh2Udefinition_listr_��h4}r`��(h:]h;]h9]h8]h<]uh=Nh>hh)]ra��cdocutils.nodes
definition_list_item
rb��)Årc��}rd��(h.XŸ���Reports must be able to be aggregated by the following fields:
* User (DN, or ORCID, or some amalgam )
* Time range, aggregated to requested unit (day, week, month, year)
* Spatial range, aggregated to requested unit
h/j]��h0h1h2Udefinition_list_itemre��h4}rf��(h:]h;]h9]h8]h<]uh=KQh)]rg��(cdocutils.nodes
term
rh��)Åri��}rj��(h.X>���Reports must be able to be aggregated by the following fields:h/jc��h0h1h2Utermrk��h4}rl��(h:]h;]h9]h8]h<]uh=KQh)]rm��h@X>���Reports must be able to be aggregated by the following fields:rn��ÖÅro��}rp��(h.X>���Reports must be able to be aggregated by the following fields:rq��h/ji��ubaubcdocutils.nodes
definition
rr��)Års��}rt��(h.U�h4}ru��(h:]h;]h9]h8]h<]uh/jc��h)]rv��hØ)Årw��}rx��(h.U�h4}ry��(h≥X���*h8]h9]h:]h;]h<]uh/js��h)]rz��(hµ)År{��}r|��(h.X%���User (DN, or ORCID, or some amalgam )r}��h4}r~��(h:]h;]h9]h8]h<]uh/jw��h)]r��hk)ÅrÄ��}rÅ��(h.j}��h/j{��h0h1h2hoh4}rÇ��(h:]h;]h9]h8]h<]uh=KOh)]rÉ��h@X%���User (DN, or ORCID, or some amalgam )rÑ��ÖÅrÖ��}rÜ��(h.j}��h/jÄ��ubaubah2h¬ubhµ)Årá��}rà��(h.XA���Time range, aggregated to requested unit (day, week, month, year)râ��h4}rä��(h:]h;]h9]h8]h<]uh/jw��h)]rã��hk)Årå��}rç��(h.jâ��h/já��h0h1h2hoh4}ré��(h:]h;]h9]h8]h<]uh=KPh)]rè��h@XA���Time range, aggregated to requested unit (day, week, month, year)rê��ÖÅrë��}rí��(h.jâ��h/jå��ubaubah2h¬ubhµ)Årì��}rî��(h.X,���Spatial range, aggregated to requested unit
h4}rï��(h:]h;]h9]h8]h<]uh/jw��h)]rñ��hk)Åró��}rò��(h.X+���Spatial range, aggregated to requested unitrô��h/jì��h0h1h2hoh4}rö��(h:]h;]h9]h8]h<]uh=KQh)]rõ��h@X+���Spatial range, aggregated to requested unitrú��ÖÅrù��}rû��(h.jô��h/jó��ubaubah2h¬ubeh2hÁubah2U
definitionrü��ubeubaubeubhK)År†��}r°��(h.U�h/h}h0h1h2hNh4}r¢��(h:]h;]h9]h8]r£��h'ah<]r§��hauh=KTh>hh)]r•��(hS)År¶��}rß��(h.X���Performancer®��h/j†��h0h1h2hWh4}r©��(h:]h;]h9]h8]h<]uh=KTh>hh)]r™��h@X���Performancer´��ÖÅr¨��}r≠��(h.j®��h/j¶��ubaubhk)ÅrÆ��}rØ��(h.XÑ���The query service should provide results quickly, as it will be used to construct the user dashboard and possibly other UI elements.r∞��h/j†��h0h1h2hoh4}r±��(h:]h;]h9]h8]h<]uh=KVh>hh)]r≤��h@XÑ���The query service should provide results quickly, as it will be used to construct the user dashboard and possibly other UI elements.r≥��ÖÅr¥��}rµ��(h.j∞��h/jÆ��ubaubeubeubhK)År∂��}r∑��(h.U�h/hLh0h1h2hNh4}r∏��(h:]h;]h9]h8]rπ��h#ah<]r∫��h
auh=KYh>hh)]rª��(hS)Årº��}rΩ��(h.X���Statistics Service Solr Indexræ��h/j∂��h0h1h2hWh4}rø��(h:]h;]h9]h8]h<]uh=KYh>hh)]r¿��h@X���Statistics Service Solr Indexr¡��ÖÅr¬��}r√��(h.jæ��h/jº��ubaubhk)Årƒ��}r≈��(h.X^���Currently Metacat writes access information to the table ‚Äòaccess_log‚Äô that has the fields:r∆��h/j∂��h0h1h2hoh4}r«��(h:]h;]h9]h8]h<]uh=KZh>hh)]r»��h@X^���Currently Metacat writes access information to the table ‚Äòaccess_log‚Äô that has the fields:r…��ÖÅr ��}rÀ��(h.j∆��h/jƒ��ubaubcdocutils.nodes
table
rÃ��)ÅrÕ��}rŒ��(h.U�h/j∂��h0h1h2Utablerœ��h4}r–��(h:]h;]h9]h8]h<]uh=Nh>hh)]r—��cdocutils.nodes
tgroup
r“��)År”��}r‘��(h.U�h4}r’��(h8]h9]h:]h;]h<]UcolsKuh/jÕ��h)]r÷��(cdocutils.nodes
colspec
r◊��)Årÿ��}rŸ��(h.U�h4}r⁄��(h8]h9]h:]h;]h<]UcolwidthKuh/j”��h)]h2Ucolspecr€��ubj◊��)År‹��}r›��(h.U�h4}rfi��(h8]h9]h:]h;]h<]UcolwidthKuh/j”��h)]h2j€��ubcdocutils.nodes
tbody
rfl��)År‡��}r·��(h.U�h4}r‚��(h:]h;]h9]h8]h<]uh/j”��h)]r„��(cdocutils.nodes
row
r‰��)ÅrÂ��}rÊ��(h.U�h4}rÁ��(h:]h;]h9]h8]h<]uh/j‡��h)]rË��(cdocutils.nodes
entry
rÈ��)ÅrÍ��}rÎ��(h.U�h4}rÏ��(h:]h;]h9]h8]h<]uh/jÂ��h)]rÌ��hk)ÅrÓ��}rÔ��(h.X���namer��h/jÍ��h0h1h2hoh4}rÒ��(h:]h;]h9]h8]h<]uh=K]h)]rÚ��h@X���namerÛ��ÖÅrÙ��}rı��(h.j��h/jÓ��ubaubah2Uentryrˆ��ubjÈ��)År˜��}r¯��(h.U�h4}r˘��(h:]h;]h9]h8]h<]uh/jÂ��h)]r˙��hk)År˚��}r¸��(h.X	���data typer˝��h/j˜��h0h1h2hoh4}r˛��(h:]h;]h9]h8]h<]uh=K]h)]rˇ��h@X	���data typer���ÖÅr��}r��(h.j˝��h/j˚��ubaubah2jˆ��ubeh2Urowr��ubj‰��)År��}r��(h.U�h4}r��(h:]h;]h9]h8]h<]uh/j‡��h)]r��(jÈ��)År��}r	��(h.U�h4}r
��(h:]h;]h9]h8]h<]uh/j��h)]r��hk)År��}r
��(h.X���entryidr��h/j��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=K_h)]r��h@X���entryidr��ÖÅr��}r��(h.j��h/j��ubaubah2jˆ��ubjÈ��)År��}r��(h.U�h4}r��(h:]h;]h9]h8]h<]uh/j��h)]r��hk)År��}r��(h.X���bigintr��h/j��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=K_h)]r��h@X���bigintr��ÖÅr��}r��(h.j��h/j��ubaubah2jˆ��ubeh2j��ubj‰��)År ��}r!��(h.U�h4}r"��(h:]h;]h9]h8]h<]uh/j‡��h)]r#��(jÈ��)År$��}r%��(h.U�h4}r&��(h:]h;]h9]h8]h<]uh/j ��h)]r'��hk)År(��}r)��(h.X
���ip_addressr*��h/j$��h0h1h2hoh4}r+��(h:]h;]h9]h8]h<]uh=K`h)]r,��h@X
���ip_addressr-��ÖÅr.��}r/��(h.j*��h/j(��ubaubah2jˆ��ubjÈ��)År0��}r1��(h.U�h4}r2��(h:]h;]h9]h8]h<]uh/j ��h)]r3��hk)År4��}r5��(h.X���character varying(512)r6��h/j0��h0h1h2hoh4}r7��(h:]h;]h9]h8]h<]uh=K`h)]r8��h@X���character varying(512)r9��ÖÅr:��}r;��(h.j6��h/j4��ubaubah2jˆ��ubeh2j��ubj‰��)År<��}r=��(h.U�h4}r>��(h:]h;]h9]h8]h<]uh/j‡��h)]r?��(jÈ��)År@��}rA��(h.U�h4}rB��(h:]h;]h9]h8]h<]uh/j<��h)]rC��hk)ÅrD��}rE��(h.X
���user_agentrF��h/j@��h0h1h2hoh4}rG��(h:]h;]h9]h8]h<]uh=Kah)]rH��h@X
���user_agentrI��ÖÅrJ��}rK��(h.jF��h/jD��ubaubah2jˆ��ubjÈ��)ÅrL��}rM��(h.U�h4}rN��(h:]h;]h9]h8]h<]uh/j<��h)]rO��hk)ÅrP��}rQ��(h.X���character varying(512)rR��h/jL��h0h1h2hoh4}rS��(h:]h;]h9]h8]h<]uh=Kah)]rT��h@X���character varying(512)rU��ÖÅrV��}rW��(h.jR��h/jP��ubaubah2jˆ��ubeh2j��ubj‰��)ÅrX��}rY��(h.U�h4}rZ��(h:]h;]h9]h8]h<]uh/j‡��h)]r[��(jÈ��)År\��}r]��(h.U�h4}r^��(h:]h;]h9]h8]h<]uh/jX��h)]r_��hk)År`��}ra��(h.X	���principalrb��h/j\��h0h1h2hoh4}rc��(h:]h;]h9]h8]h<]uh=Kbh)]rd��h@X	���principalre��ÖÅrf��}rg��(h.jb��h/j`��ubaubah2jˆ��ubjÈ��)Årh��}ri��(h.U�h4}rj��(h:]h;]h9]h8]h<]uh/jX��h)]rk��hk)Årl��}rm��(h.X���character varying(512)rn��h/jh��h0h1h2hoh4}ro��(h:]h;]h9]h8]h<]uh=Kbh)]rp��h@X���character varying(512)rq��ÖÅrr��}rs��(h.jn��h/jl��ubaubah2jˆ��ubeh2j��ubj‰��)Årt��}ru��(h.U�h4}rv��(h:]h;]h9]h8]h<]uh/j‡��h)]rw��(jÈ��)Årx��}ry��(h.U�h4}rz��(h:]h;]h9]h8]h<]uh/jt��h)]r{��hk)År|��}r}��(h.X���docidr~��h/jx��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=Kch)]rÄ��h@X���docidrÅ��ÖÅrÇ��}rÉ��(h.j~��h/j|��ubaubah2jˆ��ubjÈ��)ÅrÑ��}rÖ��(h.U�h4}rÜ��(h:]h;]h9]h8]h<]uh/jt��h)]rá��hk)Årà��}râ��(h.X���character varying(250)rä��h/jÑ��h0h1h2hoh4}rã��(h:]h;]h9]h8]h<]uh=Kch)]rå��h@X���character varying(250)rç��ÖÅré��}rè��(h.jä��h/jà��ubaubah2jˆ��ubeh2j��ubj‰��)Årê��}rë��(h.U�h4}rí��(h:]h;]h9]h8]h<]uh/j‡��h)]rì��(jÈ��)Årî��}rï��(h.U�h4}rñ��(h:]h;]h9]h8]h<]uh/jê��h)]ró��hk)Årò��}rô��(h.X���eventrö��h/jî��h0h1h2hoh4}rõ��(h:]h;]h9]h8]h<]uh=Kdh)]rú��h@X���eventrù��ÖÅrû��}rü��(h.jö��h/jò��ubaubah2jˆ��ubjÈ��)År†��}r°��(h.U�h4}r¢��(h:]h;]h9]h8]h<]uh/jê��h)]r£��hk)År§��}r•��(h.X���character varying(512)r¶��h/j†��h0h1h2hoh4}rß��(h:]h;]h9]h8]h<]uh=Kdh)]r®��h@X���character varying(512)r©��ÖÅr™��}r´��(h.j¶��h/j§��ubaubah2jˆ��ubeh2j��ubj‰��)År¨��}r≠��(h.U�h4}rÆ��(h:]h;]h9]h8]h<]uh/j‡��h)]rØ��(jÈ��)År∞��}r±��(h.U�h4}r≤��(h:]h;]h9]h8]h<]uh/j¨��h)]r≥��hk)År¥��}rµ��(h.X���date_loggedr∂��h/j∞��h0h1h2hoh4}r∑��(h:]h;]h9]h8]h<]uh=Keh)]r∏��h@X���date_loggedrπ��ÖÅr∫��}rª��(h.j∂��h/j¥��ubaubah2jˆ��ubjÈ��)Årº��}rΩ��(h.U�h4}ræ��(h:]h;]h9]h8]h<]uh/j¨��h)]rø��hk)År¿��}r¡��(h.X���timestamp without time zoner¬��h/jº��h0h1h2hoh4}r√��(h:]h;]h9]h8]h<]uh=Keh)]rƒ��h@X���timestamp without time zoner≈��ÖÅr∆��}r«��(h.j¬��h/j¿��ubaubah2jˆ��ubeh2j��ubeh2Utbodyr»��ubeh2Utgroupr…��ubaubhk)År ��}rÀ��(h.XÇ��In order to provide fast queries, aggregation and faceting of selected fields, access log information will be exported from the current
‘access_log’ table and from
the ‘systemmetadata’ table into a new Solr index that will be configured in Metacat as a second Solr core. The new Solr index will
be based on access events and will contain the fields shown in the following table:rÃ��h/j∂��h0h1h2hoh4}rÕ��(h:]h;]h9]h8]h<]uh=Khh>hh)]rŒ��h@XÇ��In order to provide fast queries, aggregation and faceting of selected fields, access log information will be exported from the current
‘access_log’ table and from
the ‘systemmetadata’ table into a new Solr index that will be configured in Metacat as a second Solr core. The new Solr index will
be based on access events and will contain the fields shown in the following table:rœ��ÖÅr–��}r—��(h.jÃ��h/j ��ubaubjÃ��)År“��}r”��(h.U�h/j∂��h0h1h2jœ��h4}r‘��(h:]h;]h9]h8]h<]uh=Nh>hh)]r’��j“��)År÷��}r◊��(h.U�h4}rÿ��(h8]h9]h:]h;]h<]UcolsKuh/j“��h)]rŸ��(j◊��)År⁄��}r€��(h.U�h4}r‹��(h8]h9]h:]h;]h<]UcolwidthKuh/j÷��h)]h2j€��ubj◊��)År›��}rfi��(h.U�h4}rfl��(h8]h9]h:]h;]h<]UcolwidthKuh/j÷��h)]h2j€��ubjfl��)År‡��}r·��(h.U�h4}r‚��(h:]h;]h9]h8]h<]uh/j÷��h)]r„��(j‰��)År‰��}rÂ��(h.U�h4}rÊ��(h:]h;]h9]h8]h<]uh/j‡��h)]rÁ��(jÈ��)ÅrË��}rÈ��(h.U�h4}rÍ��(h:]h;]h9]h8]h<]uh/j‰��h)]rÎ��hk)ÅrÏ��}rÌ��(h.X���namerÓ��h/jË��h0h1h2hoh4}rÔ��(h:]h;]h9]h8]h<]uh=Knh)]r��h@X���namerÒ��ÖÅrÚ��}rÛ��(h.jÓ��h/jÏ��ubaubah2jˆ��ubjÈ��)ÅrÙ��}rı��(h.U�h4}rˆ��(h:]h;]h9]h8]h<]uh/j‰��h)]r˜��hk)År¯��}r˘��(h.X
���ddata typer˙��h/jÙ��h0h1h2hoh4}r˚��(h:]h;]h9]h8]h<]uh=Knh)]r¸��h@X
���ddata typer˝��ÖÅr˛��}rˇ��(h.j˙��h/j¯��ubaubah2jˆ��ubeh2j��ubj‰��)År���}r��(h.U�h4}r��(h:]h;]h9]h8]h<]uh/j‡��h)]r��(jÈ��)År��}r��(h.U�h4}r��(h:]h;]h9]h8]h<]uh/j���h)]r��hk)År��}r	��(h.X���idr
��h/j��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=Kph)]r��h@X���idr
��ÖÅr��}r��(h.j
��h/j��ubaubah2jˆ��ubjÈ��)År��}r��(h.U�h4}r��(h:]h;]h9]h8]h<]uh/j���h)]r��hk)År��}r��(h.X���strr��h/j��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=Kph)]r��h@X���strr��ÖÅr��}r��(h.j��h/j��ubaubah2jˆ��ubeh2j��ubj‰��)År��}r��(h.U�h4}r��(h:]h;]h9]h8]h<]uh/j‡��h)]r��(jÈ��)År ��}r!��(h.U�h4}r"��(h:]h;]h9]h8]h<]uh/j��h)]r#��hk)År$��}r%��(h.X���datetimer&��h/j ��h0h1h2hoh4}r'��(h:]h;]h9]h8]h<]uh=Kqh)]r(��h@X���datetimer)��ÖÅr*��}r+��(h.j&��h/j$��ubaubah2jˆ��ubjÈ��)År,��}r-��(h.U�h4}r.��(h:]h;]h9]h8]h<]uh/j��h)]r/��hk)År0��}r1��(h.X���dater2��h/j,��h0h1h2hoh4}r3��(h:]h;]h9]h8]h<]uh=Kqh)]r4��h@X���dater5��ÖÅr6��}r7��(h.j2��h/j0��ubaubah2jˆ��ubeh2j��ubj‰��)År8��}r9��(h.U�h4}r:��(h:]h;]h9]h8]h<]uh/j‡��h)]r;��(jÈ��)År<��}r=��(h.U�h4}r>��(h:]h;]h9]h8]h<]uh/j8��h)]r?��hk)År@��}rA��(h.X���eventrB��h/j<��h0h1h2hoh4}rC��(h:]h;]h9]h8]h<]uh=Krh)]rD��h@X���eventrE��ÖÅrF��}rG��(h.jB��h/j@��ubaubah2jˆ��ubjÈ��)ÅrH��}rI��(h.U�h4}rJ��(h:]h;]h9]h8]h<]uh/j8��h)]rK��hk)ÅrL��}rM��(h.X���strrN��h/jH��h0h1h2hoh4}rO��(h:]h;]h9]h8]h<]uh=Krh)]rP��h@X���strrQ��ÖÅrR��}rS��(h.jN��h/jL��ubaubah2jˆ��ubeh2j��ubj‰��)ÅrT��}rU��(h.U�h4}rV��(h:]h;]h9]h8]h<]uh/j‡��h)]rW��(jÈ��)ÅrX��}rY��(h.U�h4}rZ��(h:]h;]h9]h8]h<]uh/jT��h)]r[��hk)År\��}r]��(h.X���locationr^��h/jX��h0h1h2hoh4}r_��(h:]h;]h9]h8]h<]uh=Ksh)]r`��h@X���locationra��ÖÅrb��}rc��(h.j^��h/j\��ubaubah2jˆ��ubjÈ��)Ård��}re��(h.U�h4}rf��(h:]h;]h9]h8]h<]uh/jT��h)]rg��hk)Årh��}ri��(h.X���locationrj��h/jd��h0h1h2hoh4}rk��(h:]h;]h9]h8]h<]uh=Ksh)]rl��h@X���locationrm��ÖÅrn��}ro��(h.jj��h/jh��ubaubah2jˆ��ubeh2j��ubj‰��)Årp��}rq��(h.U�h4}rr��(h:]h;]h9]h8]h<]uh/j‡��h)]rs��(jÈ��)Årt��}ru��(h.U�h4}rv��(h:]h;]h9]h8]h<]uh/jp��h)]rw��hk)Årx��}ry��(h.X���pidrz��h/jt��h0h1h2hoh4}r{��(h:]h;]h9]h8]h<]uh=Kth)]r|��h@X���pidr}��ÖÅr~��}r��(h.jz��h/jx��ubaubah2jˆ��ubjÈ��)ÅrÄ��}rÅ��(h.U�h4}rÇ��(h:]h;]h9]h8]h<]uh/jp��h)]rÉ��hk)ÅrÑ��}rÖ��(h.X���strrÜ��h/jÄ��h0h1h2hoh4}rá��(h:]h;]h9]h8]h<]uh=Kth)]rà��h@X���strrâ��ÖÅrä��}rã��(h.jÜ��h/jÑ��ubaubah2jˆ��ubeh2j��ubj‰��)Årå��}rç��(h.U�h4}ré��(h:]h;]h9]h8]h<]uh/j‡��h)]rè��(jÈ��)Årê��}rë��(h.U�h4}rí��(h:]h;]h9]h8]h<]uh/jå��h)]rì��hk)Årî��}rï��(h.X���rightsHolderrñ��h/jê��h0h1h2hoh4}ró��(h:]h;]h9]h8]h<]uh=Kuh)]rò��h@X���rightsHolderrô��ÖÅrö��}rõ��(h.jñ��h/jî��ubaubah2jˆ��ubjÈ��)Årú��}rù��(h.U�h4}rû��(h:]h;]h9]h8]h<]uh/jå��h)]rü��hk)År†��}r°��(h.X���strr¢��h/jú��h0h1h2hoh4}r£��(h:]h;]h9]h8]h<]uh=Kuh)]r§��h@X���strr•��ÖÅr¶��}rß��(h.j¢��h/j†��ubaubah2jˆ��ubeh2j��ubj‰��)År®��}r©��(h.U�h4}r™��(h:]h;]h9]h8]h<]uh/j‡��h)]r´��(jÈ��)År¨��}r≠��(h.U�h4}rÆ��(h:]h;]h9]h8]h<]uh/j®��h)]rØ��hk)År∞��}r±��(h.X	���principalr≤��h/j¨��h0h1h2hoh4}r≥��(h:]h;]h9]h8]h<]uh=Kvh)]r¥��h@X	���principalrµ��ÖÅr∂��}r∑��(h.j≤��h/j∞��ubaubah2jˆ��ubjÈ��)År∏��}rπ��(h.U�h4}r∫��(h:]h;]h9]h8]h<]uh/j®��h)]rª��hk)Årº��}rΩ��(h.X���strræ��h/j∏��h0h1h2hoh4}rø��(h:]h;]h9]h8]h<]uh=Kvh)]r¿��h@X���strr¡��ÖÅr¬��}r√��(h.jæ��h/jº��ubaubah2jˆ��ubeh2j��ubj‰��)Årƒ��}r≈��(h.U�h4}r∆��(h:]h;]h9]h8]h<]uh/j‡��h)]r«��(jÈ��)År»��}r…��(h.U�h4}r ��(h:]h;]h9]h8]h<]uh/jƒ��h)]rÀ��hk)ÅrÃ��}rÕ��(h.X���sizerŒ��h/j»��h0h1h2hoh4}rœ��(h:]h;]h9]h8]h<]uh=Kwh)]r–��h@X���sizer—��ÖÅr“��}r”��(h.jŒ��h/jÃ��ubaubah2jˆ��ubjÈ��)År‘��}r’��(h.U�h4}r÷��(h:]h;]h9]h8]h<]uh/jƒ��h)]r◊��hk)Årÿ��}rŸ��(h.X���intr⁄��h/j‘��h0h1h2hoh4}r€��(h:]h;]h9]h8]h<]uh=Kwh)]r‹��h@X���intr›��ÖÅrfi��}rfl��(h.j⁄��h/jÿ��ubaubah2jˆ��ubeh2j��ubj‰��)År‡��}r·��(h.U�h4}r‚��(h:]h;]h9]h8]h<]uh/j‡��h)]r„��(jÈ��)År‰��}rÂ��(h.U�h4}rÊ��(h:]h;]h9]h8]h<]uh/j‡��h)]rÁ��hk)ÅrË��}rÈ��(h.X���formatIdrÍ��h/j‰��h0h1h2hoh4}rÎ��(h:]h;]h9]h8]h<]uh=Kxh)]rÏ��h@X���formatIdrÌ��ÖÅrÓ��}rÔ��(h.jÍ��h/jË��ubaubah2jˆ��ubjÈ��)År��}rÒ��(h.U�h4}rÚ��(h:]h;]h9]h8]h<]uh/j‡��h)]rÛ��hk)ÅrÙ��}rı��(h.X���strrˆ��h/j��h0h1h2hoh4}r˜��(h:]h;]h9]h8]h<]uh=Kxh)]r¯��h@X���strr˘��ÖÅr˙��}r˚��(h.jˆ��h/jÙ��ubaubah2jˆ��ubeh2j��ubeh2j»��ubeh2j…��ubaubhk)År¸��}r˝��(h.X5���The new Solr index will contain the following fields:r˛��h/j∂��h0h1h2hoh4}rˇ��(h:]h;]h9]h8]h<]uh=K{h>hh)]r���h@X5���The new Solr index will contain the following fields:r��ÖÅr��}r��(h.j˛��h/j¸��ubaubcdocutils.nodes
literal_block
r��)År��}r��(h.XÛ��<doc>
<str name="id">2E3E8935-364E-4000-9357-6CE4E067D236</str>
<date name="datetime">2014-01-01T01:01:01Z</date>
<str name="event">read</str>
<location name="location">45.17614,-93.87341</location>
<str name="pid">sla.2.1</str>
<str name=”rightsHolder”>uid=williams,o=unaffiliated,dc=ecoinformatics,dc=org</str>
<str name="principal">uid=williams,o=unaffiliated,dc=ecoinformatics,dc=org</str>
<int name="size">52273</int>
<str name=”formatId”>eml://ecoinformatics.org/eml-2.0.1</str>
</doc>h/j∂��h0h1h2U
literal_blockr��h4}r��(h6h7h8]h9]h:]h;]h<]uh=Kh>hh)]r	��h@X��<doc>
<str name="id">2E3E8935-364E-4000-9357-6CE4E067D236</str>
<date name="datetime">2014-01-01T01:01:01Z</date>
<str name="event">read</str>
<location name="location">45.17614,-93.87341</location>
<str name="pid">sla.2.1</str>
<str name=”rightsHolder”>uid=williams,o=unaffiliated,dc=ecoinformatics,dc=org</str>
<str name="principal">uid=williams,o=unaffiliated,dc=ecoinformatics,dc=org</str>
<int name="size">52273</int>
<str name=”formatId”>eml://ecoinformatics.org/eml-2.0.1</str>
</doc>r
��ÖÅr��}r��(h.U�h/j��ubaubhk)År
��}r��(h.Xr���The second Solr core that will contain usage statistics will require a modification to the existing solr.xml file:r��h/j∂��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=Kãh>hh)]r��h@Xr���The second Solr core that will contain usage statistics will require a modification to the existing solr.xml file:r��ÖÅr��}r��(h.j��h/j
��ubaubj��)År��}r��(h.XY��<solr persistent="false">
  <!--
  adminPath: RequestHandler path to manage cores.
    If 'null' (or absent), cores will not be manageable via request handler
  -->
  <cores adminPath="/admin/cores" defaultCoreName="collection1">
    <core name="collection1" instanceDir="." />
    <core name=”stats” instanceDir=”.”/>
  </cores>
</solr>h/j∂��h0h1h2j��h4}r��(h6h7h8]h9]h:]h;]h<]uh=Kèh>hh)]r��h@XY��<solr persistent="false">
  <!--
  adminPath: RequestHandler path to manage cores.
    If 'null' (or absent), cores will not be manageable via request handler
  -->
  <cores adminPath="/admin/cores" defaultCoreName="collection1">
    <core name="collection1" instanceDir="." />
    <core name=”stats” instanceDir=”.”/>
  </cores>
</solr>r��ÖÅr��}r��(h.U�h/j��ubaubhk)År��}r��(h.XR��A Java TimerTask will run the import method that will read event records from the Metacat access_log table and combine these
record data from the systemmetadata table
and write this combined entry to the stats Solr index. Access_log entry types such as ‘synchronization_failed’ and ‘replication’
will be filtered out and
will not be written to the Solr index. The time of the last record imported from access_log will be stored so that subsequent
imports would start from the next unimported event record. If required, the data may be aggregated by time interval, such as week or
month.r��h/j∂��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=Köh>hh)]r ��h@XR��A Java TimerTask will run the import method that will read event records from the Metacat access_log table and combine these
record data from the systemmetadata table
and write this combined entry to the stats Solr index. Access_log entry types such as ‘synchronization_failed’ and ‘replication’
will be filtered out and
will not be written to the Solr index. The time of the last record imported from access_log will be stored so that subsequent
imports would start from the next unimported event record. If required, the data may be aggregated by time interval, such as week or
month.r!��ÖÅr"��}r#��(h.j��h/j��ubaubhk)År$��}r%��(h.XX���The statistics service will be exposed as a new query engine with a DataONE URL such as:r&��h/j∂��h0h1h2hoh4}r'��(h:]h;]h9]h8]h<]uh=K¢h>hh)]r(��h@XX���The statistics service will be exposed as a new query engine with a DataONE URL such as:r)��ÖÅr*��}r+��(h.j&��h/j$��ubaubj��)År,��}r-��(h.X1���https://hostname/knb/d1/mn/v1/query/stats/<query>h/j∂��h0h1h2j��h4}r.��(h6h7h8]h9]h:]h;]h<]uh=K¶h>hh)]r/��h@X1���https://hostname/knb/d1/mn/v1/query/stats/<query>r0��ÖÅr1��}r2��(h.U�h/j,��ubaubhk)År3��}r4��(h.XY���Queries will be passed to the new Solr query engine using the standard Solr query syntax.r5��h/j∂��h0h1h2hoh4}r6��(h:]h;]h9]h8]h<]uh=K®h>hh)]r7��h@XY���Queries will be passed to the new Solr query engine using the standard Solr query syntax.r8��ÖÅr9��}r:��(h.j5��h/j3��ubaubhk)År;��}r<��(h.Xé���One new class will be added to Metacat to handle stats queries, StatsQueryService. Figure 2 shows a call trace for a statistics
service query.r=��h/j∂��h0h1h2hoh4}r>��(h:]h;]h9]h8]h<]uh=K´h>hh)]r?��h@Xé���One new class will be added to Metacat to handle stats queries, StatsQueryService. Figure 2 shows a call trace for a statistics
service query.r@��ÖÅrA��}rB��(h.j=��h/j;��ubaubcdocutils.nodes
figure
rC��)ÅrD��}rE��(h.U�h/j∂��h0h1h2UfigurerF��h4}rG��(h:]h;]h9]h8]rH��Uid1rI��ah<]uh=Nh>hh)]rJ��(cdocutils.nodes
image
rK��)ÅrL��}rM��(h.Xf���.. figure:: images/stats-query-sequence-diagram.png

   Figure 2. Statistics query sequence diagram.

h4}rN��(UuriX'���images/stats-query-sequence-diagram.pngrO��h8]h9]h:]h;]U
candidatesrP��}rQ��U*jO��sh<]uh/jD��h)]h2UimagerR��ubcdocutils.nodes
caption
rS��)ÅrT��}rU��(h.X,���Figure 2. Statistics query sequence diagram.rV��h/jD��h0h1h2UcaptionrW��h4}rX��(h:]h;]h9]h8]h<]uh=K∞h)]rY��h@X,���Figure 2. Statistics query sequence diagram.rZ��ÖÅr[��}r\��(h.jV��h/jT��ubaubeubhk)År]��}r^��(h.X•���The StatsQuerySerivce class will transform the incoming query to Solr parameters, issue the query and returns the query result as a byte stream of text/html content.r_��h/j∂��h0h1h2hoh4}r`��(h:]h;]h9]h8]h<]uh=K≥h>hh)]ra��h@X•���The StatsQuerySerivce class will transform the incoming query to Solr parameters, issue the query and returns the query result as a byte stream of text/html content.rb��ÖÅrc��}rd��(h.j_��h/j]��ubaubeubhK)Åre��}rf��(h.U�h/hLh0h1h2hNh4}rg��(h:]h;]h9]h8]rh��hah<]ri��hauh=K∂h>hh)]rj��(hS)Årk��}rl��(h.X���Statistics Service Usagerm��h/je��h0h1h2hWh4}rn��(h:]h;]h9]h8]h<]uh=K∂h>hh)]ro��h@X���Statistics Service Usagerp��ÖÅrq��}rr��(h.jm��h/jk��ubaubhk)Års��}rt��(h.Xf���The following sections show some of the queries that will be available through the statistics service.ru��h/je��h0h1h2hoh4}rv��(h:]h;]h9]h8]h<]uh=K∏h>hh)]rw��h@Xf���The following sections show some of the queries that will be available through the statistics service.rx��ÖÅry��}rz��(h.ju��h/js��ubaubhK)År{��}r|��(h.U�h/je��h0h1h2hNh4}r}��(h:]h;]h9]h8]r~��hah<]r��hauh=Kªh>hh)]rÄ��(hS)ÅrÅ��}rÇ��(h.X3���Usage of pids provided by a specified rights holderrÉ��h/j{��h0h1h2hWh4}rÑ��(h:]h;]h9]h8]h<]uh=Kªh>hh)]rÖ��h@X3���Usage of pids provided by a specified rights holderrÜ��ÖÅrá��}rà��(h.jÉ��h/jÅ��ubaubhk)Årâ��}rä��(h.Xí���The following example shows a query for download volume for pids created by rightsHolder=williams with download size statistics aggregated by pid:rã��h/j{��h0h1h2hoh4}rå��(h:]h;]h9]h8]h<]uh=KΩh>hh)]rç��h@Xí���The following example shows a query for download volume for pids created by rightsHolder=williams with download size statistics aggregated by pid:ré��ÖÅrè��}rê��(h.jã��h/jâ��ubaubj��)Årë��}rí��(h.Xç���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=rightsHolder:uid=williams*&fq=event:read&stats=true&stats.field=size&rows=0&stats.facet=pidh/j{��h0h1h2j��h4}rì��(h6h7h8]h9]h:]h;]h<]uh=K¡h>hh)]rî��h@Xç���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=rightsHolder:uid=williams*&fq=event:read&stats=true&stats.field=size&rows=0&stats.facet=pidrï��ÖÅrñ��}ró��(h.U�h/jë��ubaubhk)Årò��}rô��(h.X!���The following result is returned:rö��h/j{��h0h1h2hoh4}rõ��(h:]h;]h9]h8]h<]uh=K√h>hh)]rú��h@X!���The following result is returned:rù��ÖÅrû��}rü��(h.jö��h/jò��ubaubj��)År†��}r°��(h.X��<?xml version="1.0" encoding="UTF-8"?>
<response>
  ...
  <result name="response" numFound="8" start="0"/>
  <lst name="stats">
    <lst name="stats_fields">
      <lst name="size">
        <double name="min">30.0</double>
        <double name="max">1000.0</double>
        <double name="sum">3150.0</double>
        <long name="count">8</long>
        <long name="missing">0</long>
        <double name="sumOfSquares">3004500.0</double>
        <double name="mean">393.75</double>
        <double name="stddev">502.0226944215627</double>
        <lst name="facets">
          <lst name="pid">
            <lst name="sla.3.1">
              <double name="min">1000.0</double>
              <double name="max">1000.0</double>
              <double name="sum">3000.0</double>
              <long name="count">3</long>
              <long name="missing">0</long>
              <double name="sumOfSquares">3000000.0</double>
              <double name="mean">1000.0</double>
              <double name="stddev">0.0</double>
            </lst>
            <lst name="sla.2.1">
              <double name="min">30.0</double>
              <double name="max">30.0</double>
              <double name="sum">150.0</double>
              <long name="count">5</long>
              <long name="missing">0</long>
              <double name="sumOfSquares">4500.0</double>
              <double name="mean">30.0</double>
              <double name="stddev">0.0</double>
            </lst>
          </lst>
        </lst>
      </lst>
    </lst>
  </lst>
</response>h/j{��h0h1h2j��h4}r¢��(h6h7h8]h9]h:]h;]h<]uh=K«h>hh)]r£��h@X��<?xml version="1.0" encoding="UTF-8"?>
<response>
  ...
  <result name="response" numFound="8" start="0"/>
  <lst name="stats">
    <lst name="stats_fields">
      <lst name="size">
        <double name="min">30.0</double>
        <double name="max">1000.0</double>
        <double name="sum">3150.0</double>
        <long name="count">8</long>
        <long name="missing">0</long>
        <double name="sumOfSquares">3004500.0</double>
        <double name="mean">393.75</double>
        <double name="stddev">502.0226944215627</double>
        <lst name="facets">
          <lst name="pid">
            <lst name="sla.3.1">
              <double name="min">1000.0</double>
              <double name="max">1000.0</double>
              <double name="sum">3000.0</double>
              <long name="count">3</long>
              <long name="missing">0</long>
              <double name="sumOfSquares">3000000.0</double>
              <double name="mean">1000.0</double>
              <double name="stddev">0.0</double>
            </lst>
            <lst name="sla.2.1">
              <double name="min">30.0</double>
              <double name="max">30.0</double>
              <double name="sum">150.0</double>
              <long name="count">5</long>
              <long name="missing">0</long>
              <double name="sumOfSquares">4500.0</double>
              <double name="mean">30.0</double>
              <double name="stddev">0.0</double>
            </lst>
          </lst>
        </lst>
      </lst>
    </lst>
  </lst>
</response>r§��ÖÅr•��}r¶��(h.U�h/j†��ubaubhk)Årß��}r®��(h.XU���The previous query can be constrained to a specific time by adding a time range, i.e.r©��h/j{��h0h1h2hoh4}r™��(h:]h;]h9]h8]h<]uh=KÛh>hh)]r´��h@XU���The previous query can be constrained to a specific time by adding a time range, i.e.r¨��ÖÅr≠��}rÆ��(h.j©��h/jß��ubaubj��)ÅrØ��}r∞��(h.X<���&fq=datetime:%[2013-01-01T23:59:59Z TO 2013-04-31T23:59:59Z]h/j{��h0h1h2j��h4}r±��(h6h7h8]h9]h:]h;]h<]uh=K˜h>hh)]r≤��h@X<���&fq=datetime:%[2013-01-01T23:59:59Z TO 2013-04-31T23:59:59Z]r≥��ÖÅr¥��}rµ��(h.U�h/jØ��ubaubeubhK)År∂��}r∑��(h.U�h/je��h0h1h2hNh4}r∏��(h:]h;]h9]h8]rπ��hah<]r∫��h	auh=K˙h>hh)]rª��(hS)Årº��}rΩ��(h.X���Data uploadsræ��h/j∂��h0h1h2hWh4}rø��(h:]h;]h9]h8]h<]uh=K˙h>hh)]r¿��h@X���Data uploadsr¡��ÖÅr¬��}r√��(h.jæ��h/jº��ubaubhk)Årƒ��}r≈��(h.XT���The following query shows counts of data uploads by format type by a specified user:r∆��h/j∂��h0h1h2hoh4}r«��(h:]h;]h9]h8]h<]uh=K¸h>hh)]r»��h@XT���The following query shows counts of data uploads by format type by a specified user:r…��ÖÅr ��}rÀ��(h.j∆��h/jƒ��ubaubj��)ÅrÃ��}rÕ��(h.XÉ���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=rightsHolder:uid=williams*&fq=event:create&facet=true&facet.field=formatId&rows=0h/j∂��h0h1h2j��h4}rŒ��(h6h7h8]h9]h:]h;]h<]uh=M�h>hh)]rœ��h@XÉ���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=rightsHolder:uid=williams*&fq=event:create&facet=true&facet.field=formatId&rows=0r–��ÖÅr—��}r“��(h.U�h/jÃ��ubaubj��)År”��}r‘��(h.XŒ��<?xml version="1.0" encoding="UTF-8"?>
<response>
  ...
  <result name="response" numFound="3" start="0"/>
  <lst name="facet_counts">
    <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="formatId">
        <int name="BIN">2</int>
        <int name="eml://ecoinformatics.org/eml-2.1.1">1</int>
        <int name="text/csv">0</int>
      </lst>
    </lst>
    <lst name="facet_dates"/>
    <lst name="facet_ranges"/>
  </lst>
</response>h/j∂��h0h1h2j��h4}r’��(h6h7h8]h9]h:]h;]h<]uh=Mh>hh)]r÷��h@XŒ��<?xml version="1.0" encoding="UTF-8"?>
<response>
  ...
  <result name="response" numFound="3" start="0"/>
  <lst name="facet_counts">
    <lst name="facet_queries"/>
    <lst name="facet_fields">
      <lst name="formatId">
        <int name="BIN">2</int>
        <int name="eml://ecoinformatics.org/eml-2.1.1">1</int>
        <int name="text/csv">0</int>
      </lst>
    </lst>
    <lst name="facet_dates"/>
    <lst name="facet_ranges"/>
  </lst>
</response>r◊��ÖÅrÿ��}rŸ��(h.U�h/j”��ubaubeubhK)År⁄��}r€��(h.U�h/je��h0h1h2hNh4}r‹��(h:]h;]h9]h8]r›��h$ah<]rfi��hauh=Mh>hh)]rfl��(hS)År‡��}r·��(h.X���Data downloadsr‚��h/j⁄��h0h1h2hWh4}r„��(h:]h;]h9]h8]h<]uh=Mh>hh)]r‰��h@X���Data downloadsrÂ��ÖÅrÊ��}rÁ��(h.j‚��h/j‡��ubaubhk)ÅrË��}rÈ��(h.XY���The following query shows data download counts by a specific user for each month in 2013:rÍ��h/j⁄��h0h1h2hoh4}rÎ��(h:]h;]h9]h8]h<]uh=Mh>hh)]rÏ��h@XY���The following query shows data download counts by a specific user for each month in 2013:rÌ��ÖÅrÓ��}rÔ��(h.jÍ��h/jË��ubaubj��)År��}rÒ��(h.X˙���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=principal:williams&fq=event:read&fq=formatId:BIN&facet=true&facet.field=event&facet.range=datetime&facet.range.start=2013-01-01T01:01:01Z&facet.range.end=2013-12-31T24:59:59Z&facet.range.gap=%2B1MONTHh/j⁄��h0h1h2j��h4}rÚ��(h6h7h8]h9]h:]h;]h<]uh=Mh>hh)]rÛ��h@X˙���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=principal:williams&fq=event:read&fq=formatId:BIN&facet=true&facet.field=event&facet.range=datetime&facet.range.start=2013-01-01T01:01:01Z&facet.range.end=2013-12-31T24:59:59Z&facet.range.gap=%2B1MONTHrÙ��ÖÅrı��}rˆ��(h.U�h/j��ubaubj��)År˜��}r¯��(h.X¡��<?xml version="1.0" encoding="UTF-8"?>
<response>
    ...
    <lst name="facet_ranges">
      <lst name="datetime">
        <lst name="counts">
          <int name="2013-01-01T01:01:01Z">0</int>
          <int name="2013-02-01T01:01:01Z">0</int>
          <int name="2013-03-01T01:01:01Z">0</int>
          <int name="2013-04-01T01:01:01Z">0</int>
          <int name="2013-05-01T01:01:01Z">0</int>
          <int name="2013-06-01T01:01:01Z">2</int>
          <int name="2013-07-01T01:01:01Z">1</int>
          <int name="2013-08-01T01:01:01Z">0</int>
          <int name="2013-09-01T01:01:01Z">0</int>
          <int name="2013-10-01T01:01:01Z">0</int>
          <int name="2013-11-01T01:01:01Z">0</int>
          <int name="2013-12-01T01:01:01Z">0</int>
        </lst>
        <str name="gap">+1MONTH</str>
        <date name="start">2013-01-01T01:01:01Z</date>
        <date name="end">2014-01-01T01:01:01Z</date>
      </lst>
    </lst>
  </lst>
</response>h/j⁄��h0h1h2j��h4}r˘��(h6h7h8]h9]h:]h;]h<]uh=M!h>hh)]r˙��h@X¡��<?xml version="1.0" encoding="UTF-8"?>
<response>
    ...
    <lst name="facet_ranges">
      <lst name="datetime">
        <lst name="counts">
          <int name="2013-01-01T01:01:01Z">0</int>
          <int name="2013-02-01T01:01:01Z">0</int>
          <int name="2013-03-01T01:01:01Z">0</int>
          <int name="2013-04-01T01:01:01Z">0</int>
          <int name="2013-05-01T01:01:01Z">0</int>
          <int name="2013-06-01T01:01:01Z">2</int>
          <int name="2013-07-01T01:01:01Z">1</int>
          <int name="2013-08-01T01:01:01Z">0</int>
          <int name="2013-09-01T01:01:01Z">0</int>
          <int name="2013-10-01T01:01:01Z">0</int>
          <int name="2013-11-01T01:01:01Z">0</int>
          <int name="2013-12-01T01:01:01Z">0</int>
        </lst>
        <str name="gap">+1MONTH</str>
        <date name="start">2013-01-01T01:01:01Z</date>
        <date name="end">2014-01-01T01:01:01Z</date>
      </lst>
    </lst>
  </lst>
</response>r˚��ÖÅr¸��}r˝��(h.U�h/j˜��ubaubhk)År˛��}rˇ��(h.X[���The following query shows EML metadata downloads by a specific user for each month in 2013.r���h/j⁄��h0h1h2hoh4}r��(h:]h;]h9]h8]h<]uh=M<h>hh)]r��h@X[���The following query shows EML metadata downloads by a specific user for each month in 2013.r��ÖÅr��}r��(h.j���h/j˛��ubaubj��)År��}r��(h.X˛���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=principal:*williams*&fq=event:read&fq=formatId:*eml*&facet=true&facet.field=event&facet.range=datetime&facet.range.start=2013-01-01T01:01:01Z&facet.range.end=2013-12-31T24:59:59Z&facet.range.gap=%2B1MONTHh/j⁄��h0h1h2j��h4}r��(h6h7h8]h9]h:]h;]h<]uh=M@h>hh)]r	��h@X˛���http://myd1host/knb/d1/mn/v1/query/stats/q=*:*&fq=principal:*williams*&fq=event:read&fq=formatId:*eml*&facet=true&facet.field=event&facet.range=datetime&facet.range.start=2013-01-01T01:01:01Z&facet.range.end=2013-12-31T24:59:59Z&facet.range.gap=%2B1MONTHr
��ÖÅr��}r��(h.U�h/j��ubaubj��)År
��}r��(h.X≈��<?xml version="1.0" encoding="UTF-8"?>
<response>
        ...
    <lst name="facet_ranges">
      <lst name="datetime">
        <lst name="counts">
          <int name="2013-01-01T01:01:01Z">0</int>
          <int name="2013-02-01T01:01:01Z">0</int>
          <int name="2013-03-01T01:01:01Z">0</int>
          <int name="2013-04-01T01:01:01Z">1</int>
          <int name="2013-05-01T01:01:01Z">1</int>
          <int name="2013-06-01T01:01:01Z">0</int>
          <int name="2013-07-01T01:01:01Z">2</int>
          <int name="2013-08-01T01:01:01Z">0</int>
          <int name="2013-09-01T01:01:01Z">0</int>
          <int name="2013-10-01T01:01:01Z">0</int>
          <int name="2013-11-01T01:01:01Z">0</int>
          <int name="2013-12-01T01:01:01Z">0</int>
        </lst>
        <str name="gap">+1MONTH</str>
        <date name="start">2013-01-01T01:01:01Z</date>
        <date name="end">2014-01-01T01:01:01Z</date>
      </lst>
    </lst>
  </lst>
</response>h/j⁄��h0h1h2j��h4}r��(h6h7h8]h9]h:]h;]h<]uh=MDh>hh)]r��h@X≈��<?xml version="1.0" encoding="UTF-8"?>
<response>
        ...
    <lst name="facet_ranges">
      <lst name="datetime">
        <lst name="counts">
          <int name="2013-01-01T01:01:01Z">0</int>
          <int name="2013-02-01T01:01:01Z">0</int>
          <int name="2013-03-01T01:01:01Z">0</int>
          <int name="2013-04-01T01:01:01Z">1</int>
          <int name="2013-05-01T01:01:01Z">1</int>
          <int name="2013-06-01T01:01:01Z">0</int>
          <int name="2013-07-01T01:01:01Z">2</int>
          <int name="2013-08-01T01:01:01Z">0</int>
          <int name="2013-09-01T01:01:01Z">0</int>
          <int name="2013-10-01T01:01:01Z">0</int>
          <int name="2013-11-01T01:01:01Z">0</int>
          <int name="2013-12-01T01:01:01Z">0</int>
        </lst>
        <str name="gap">+1MONTH</str>
        <date name="start">2013-01-01T01:01:01Z</date>
        <date name="end">2014-01-01T01:01:01Z</date>
      </lst>
    </lst>
  </lst>
</response>r��ÖÅr��}r��(h.U�h/j
��ubaubeubeubhK)År��}r��(h.U�h/hLh0h1h2hNh4}r��(h:]h;]h9]h8]r��h%ah<]r��hauh=M`h>hh)]r��(hS)År��}r��(h.X���Unresolved Issues/Questionsr��h/j��h0h1h2hWh4}r��(h:]h;]h9]h8]h<]uh=M`h>hh)]r��h@X���Unresolved Issues/Questionsr��ÖÅr ��}r!��(h.j��h/j��ubaubh©)År"��}r#��(h.U�h/j��h0Nh2h¨h4}r$��(h:]h;]h9]h8]h<]uh=Nh>hh)]r%��cdocutils.nodes
enumerated_list
r&��)År'��}r(��(h.U�h4}r)��(Usuffixr*��U.h8]h9]h:]Uprefixr+��U�h;]h<]Uenumtyper,��Uarabicr-��uh/j"��h)]r.��(hµ)År/��}r0��(h.XH���How is the location of an event determined? What do we mean by location?r1��h4}r2��(h:]h;]h9]h8]h<]uh/j'��h)]r3��hk)År4��}r5��(h.j1��h/j/��h0h1h2hoh4}r6��(h:]h;]h9]h8]h<]uh=Mbh)]r7��h@XH���How is the location of an event determined? What do we mean by location?r8��ÖÅr9��}r:��(h.j1��h/j4��ubaubah2h¬ubhµ)År;��}r<��(h.X?��Currently Solr (3.x and 4.x) doesn‚Äôt allow faceting by date/time interval, so it isn't possible to use the stats component to calculate total download volume for a time interval over a time range, such as every month for the last 10 years. Therefor for  calculated amounts, a query for each time interval is required.r=��h4}r>��(h:]h;]h9]h8]h<]uh/j'��h)]r?��hk)År@��}rA��(h.j=��h/j;��h0h1h2hoh4}rB��(h:]h;]h9]h8]h<]uh=Mch)]rC��h@X?��Currently Solr (3.x and 4.x) doesn‚Äôt allow faceting by date/time interval, so it isn't possible to use the stats component to calculate total download volume for a time interval over a time range, such as every month for the last 10 years. Therefor for  calculated amounts, a query for each time interval is required.rD��ÖÅrE��}rF��(h.j=��h/j@��ubaubah2h¬ubhµ)ÅrG��}rH��(h.XJ���Where will citation info come from? Do we import this into the Solr index?rI��h4}rJ��(h:]h;]h9]h8]h<]uh/j'��h)]rK��hk)ÅrL��}rM��(h.jI��h/jG��h0h1h2hoh4}rN��(h:]h;]h9]h8]h<]uh=Mdh)]rO��h@XJ���Where will citation info come from? Do we import this into the Solr index?rP��ÖÅrQ��}rR��(h.jI��h/jL��ubaubah2h¬ubhµ)ÅrS��}rT��(h.X≥���Are there text fields that the statistics service should include, i.e. do we want to provide statistics for queries such as "how many pids were downloaded that mention kelp?"?



h4}rU��(h:]h;]h9]h8]h<]uh/j'��h)]rV��hk)ÅrW��}rX��(h.XØ���Are there text fields that the statistics service should include, i.e. do we want to provide statistics for queries such as "how many pids were downloaded that mention kelp?"?rY��h/jS��h0h1h2hoh4}rZ��(h:]h;]h9]h8]h<]uh=Meh)]r[��h@XØ���Are there text fields that the statistics service should include, i.e. do we want to provide statistics for queries such as "how many pids were downloaded that mention kelp?"?r\��ÖÅr]��}r^��(h.jY��h/jW��ubaubah2h¬ubeh2Uenumerated_listr_��ubaubeubeubeh.U�Utransformerr`��NU
footnote_refsra��}rb��Urefnamesrc��}rd��Usymbol_footnotesre��]rf��Uautofootnote_refsrg��]rh��Usymbol_footnote_refsri��]rj��U	citationsrk��]rl��h>hUcurrent_linerm��NUtransform_messagesrn��]ro��Ureporterrp��NUid_startrq��KU
autofootnotesrr��]rs��U
citation_refsrt��}ru��Uindirect_targetsrv��]rw��Usettingsrx��(cdocutils.frontend
Values
ry��orz��}r{��(Ufootnote_backlinksr|��KUrecord_dependenciesr}��NUrfc_base_urlr~��Uhttps://tools.ietf.org/html/r��U	tracebackrÄ��àUpep_referencesrÅ��NUstrip_commentsrÇ��NU
toc_backlinksrÉ��jˆ��U
language_coder��Uenr��U	datestampr��NUreport_levelr�KU_destinationr�NU
halt_levelr�KU
strip_classesrä��NhWNUerror_encoding_error_handlerrã��Ubackslashreplacerå��Udebugrç��NUembed_stylesheetré��âUoutput_encoding_error_handlerrè��Ustrictrê��U
sectnum_xformr�KUdump_transformsr�NU
docinfo_xformrì��KUwarning_streamrî��NUpep_file_url_templaterï��Upep-%04drñ��Uexit_status_levelró��KUconfigrò��NUstrict_visitorrô��NUcloak_email_addressesrö��àUtrim_footnote_reference_spacerõ��âUenvrú��NUdump_pseudo_xmlrù��NUexpose_internalsrû��NUsectsubtitle_xformrü��âUsource_linkr†��NUrfc_referencesr°��NUoutput_encodingr¢��Uutf-8r£��U
source_urlr§��NUinput_encodingr•��U	utf-8-sigr¶��U_disable_configrß��NU	id_prefixr®��U�U	tab_widthr©��KUerror_encodingr™��UUTF-8r´��U_sourcer¨��h1Ugettext_compactr≠��àU	generatorrÆ��NUdump_internalsrØ��NUsmart_quotesr∞��âUpep_base_urlr±��U https://www.python.org/dev/peps/r≤��Usyntax_highlightr≥��Ulongr¥��Uinput_encoding_error_handlerrµ��jê��Uauto_id_prefixr∂��Uidr∑��Udoctitle_xformr∏��âUstrip_elements_with_classesrπ��NU
_config_filesr∫��]rª��Ufile_insertion_enabledrº��àUraw_enabledrΩ��KU
dump_settingsræ��NubUsymbol_footnote_startrø��K�h8}r¿��(h(jN��h%j��hh}h$j⁄��h#j∂��h!h]h hLhj{��h&hìhje��h'j†��jI��jD��hj∂��h"hËuUsubstitution_namesr¡��}r¬��h2h>h4}r√��(h:]h8]h9]Usourceh1h;]h<]uU	footnotesrƒ��]r≈��Urefidsr∆��}r«��ub.