下午好。
我在Sorl很新。我需要索引来自WS通信请求/响应的许多XML文件以及更多通用信息(如“模板”),该模板具有调用的服务,操作,消耗的时间等等。
我在Solr中使用索引进行了一些测试,我宣传了两种策略来索引所有这些数据。一种解决方案是在Solr索引中的文档的两个字段中保存请求和响应的所有XML。 另一个是对请求和响应进行转换,并提取对我们很重要的数据,并在一些感兴趣的字段中使用该信息填充索引。
我将提供第一个替代方案的小例子,将所有XML保存为字段
索引架构
<!-- Service Template data!-->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="service" type="text_general" indexed="true" stored="true"/>
<field name="version" type="string" indexed="true" stored="true"/>
<field name="operation" type="text_general" indexed="true" stored="true"/>
<field name="server" type="text_general" indexed="true" stored="true"/>
<field name="url" type="text_general" indexed="true" stored="true"/>
<field name="invocationTime" type="int" indexed="true" stored="true"/>
<field name="appName" type="string" indexed="true" stored="true"/>
<field name="userName" type="string" indexed="true" stored="true"/>
<field name="dateHour" type="date" indexed="true" stored="true"/>
<field name="error" type="boolean" indexed="true" stored="true"/>
<field name="businessFault" type="boolean" indexed="true" stored="true"/>
<field name="request" type="text_general" indexed="true" stored="true"/> <!-- here will save all the XML body of the request -->
<field name="response" type="text_general" indexed="true" stored="true"/> <!-- here will save all the XML body of the response -->
索引数据
<doc>
<!-- Service Template data-->
<field name="id">ID:10.250.2.31-1456089599e-12:13722</field>
<field name="service">SocioUnificado</field>
<field name="version">v1</field>
<field name="operation">getSocioCompleto</field>
<field name="server">testesb.osde.ar</field>
<field name="url">http://testesb.osde.ar/ESB/jbi/Socio/</field>
<field name="invocationTime">450</field>
<field name="appName">ESB_SUPPORT</field>
<field name="userName">FLUX</field>
<field name="dateHour">2014-04-11T08:45:56Z</field>
<field name="error">false</field>
<field name="businessFault">false</field>
<field name="request"><![CDATA[<getXX>
<dataFilter>
<date>20120813</date>
<contractNumber>234</contractNumber>
<orderNumber>01</orderNumber>
</dataFilter>
</dataFilter>]]></field>
<field name="response"><![CDATA[<getXXResponse>
<client>
<contract>
<attentionCenterInfo>
<code>11</code>
<description>CALIFORNIA LA</description>
<buildingInfo>
<code>35</code>
<description>BIG BUILDING 2</description>
</buildingInfo>
</attentionCenterInfo>
... And a lot of more XML DATA ... ]]>
</doc>
保存前的第二个替代预处理XML
索引架构
<!-- Service Template data!-->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="service" type="text_general" indexed="true" stored="true"/>
<field name="version" type="string" indexed="true" stored="true"/>
<field name="operation" type="text_general" indexed="true" stored="true"/>
<field name="server" type="text_general" indexed="true" stored="true"/>
<field name="url" type="text_general" indexed="true" stored="true"/>
<field name="invocationTime" type="int" indexed="true" stored="true"/>
<field name="appName" type="string" indexed="true" stored="true"/>
<field name="userName" type="string" indexed="true" stored="true"/>
<field name="dateHour" type="date" indexed="true" stored="true"/>
<field name="error" type="boolean" indexed="true" stored="true"/>
<field name="businessFault" type="boolean" indexed="true" stored="true"/>
<!-- Service particular data -->
<field name="contractNumber" type="text_general" indexed="true" stored="true"/>
<field name="orderNumber" type="text_general" indexed="true" stored="true"/>
<field name="date" type="text_general" indexed="true" stored="true"/>
索引数据
<doc>
<!-- Service Template data-->
<field name="id">ID:10</field>
<field name="service">service1</field>
<field name="version">v1</field>
<field name="operation">getXX</field>
<field name="server">server1</field>
<field name="url">http://server1/ESB/service1/</field>
<field name="invocationTime">450</field>
<field name="appName">ESB_SUPPORT</field>
<field name="userName">ODOR</field>
<field name="dateHour">2014-04-11T08:45:56Z</field>
<field name="error">false</field>
<field name="businessFault">false</field>
<!-- Service particular data -->
<field name="date">20120813</field>
<field name="contractNumber">610</field>
<field name="orderNumber">01</field>
</doc>
我知道你对这个策略有什么看法?如果你知道另一个更适合这个用例?
我可以说我们服务的请求/响应的数据可能很长(比如平均有120行XML),而我们在全球有超过300项服务。我们的服务每天生产80.000请求。最后,我可以说请求/响应中的所有信息对于每个服务的每个操作都具有不同的结构(所有异质数据)。
提前致谢。
答案 0 :(得分:0)
你只能索引一个XML文件,因此,我建议你有许多solr的集群实例,每个实例对应一个xml文件。