如何在Elasticsearch中有效地存储文本内容并使其可搜索

时间:2018-04-16 04:40:55

标签: java elasticsearch

我有这种形式的文件中的数据,如何拆分不同的部分并将其存储在Elasticsearch索引中,并根据一些唯一的数字进行搜索。

示例数据:

SSLEGGU00402-IM    13949 13949    58     1  285228   3094844 1U00402-IM    13949
   200  1490   400  1490   600  1490   800  1490  1000  1490 2U00402-IM    13949
  1200  1490  1400  1491  1600  1493  1800  1497  2000  1504 3U00402-IM    13949
SSLEGGU00412-IM    13885 13885    58     1  286359   3094844 1U00412-IM    13885
   200  1489   400  1489   600  1489   800  1489  1000  1489 2U00412-IM    13885
  1200  1489  1400  1490  1600  1493  1800  1497  2000  1505 3U00412-IM    13885

我想将SSLEGGU00402作为单独的文档存储,SSLEGGU00412作为单独的文档存储,我需要根据相同的文档进行搜索。

默认情况下,Elasticsearch会提供一些方法来拆分此文本并存储它,或者我们需要以编程方式将其拆分并存储为Elasticsearch Index。

1 个答案:

答案 0 :(得分:0)

一个良好的开端是研究 import com.sap.conn.jco.ext.DestinationDataProvider; import com.sap.conn.jco.JCoDestination; import com.sap.conn.jco.JCoException; import com.sap.conn.jco.JCoDestinationManager; import java.util.Properties; public class TestMySAP { public static void main(String[] args) { // This will create a file called mySAPSystem.jcoDestination String DESTINATION_NAME1 = "mySAPSystem"; Properties connectProperties = new Properties(); connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "10.129.19.151"); //host connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "00"); //system number connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "442"); //client number connectProperties.setProperty(DestinationDataProvider.JCO_USER, "MPOSRFC"); connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "123456"); connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en"); createDataFile(DESTINATION_NAME1, connectProperties); // This will use that destination file to connect to SAP try { JCoDestination destination = JCoDestinationManager.getDestination("mySAPSystem"); System.out.println("Attributes:"); System.out.println(destination.getAttributes()); System.out.println(); destination.ping(); } catch (JCoException e){ e.printStackTrace(); } } } 及其Ingest Node。它们可用于在文档编制索引之前对文档应用转换。

  

如果您的源数据定义明确且符合特定模式,我希望您可以使用Processors处理器将其转换为结构化JSON以进行索引。

https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.html

如果您有需要应用于数据预处理的复杂逻辑,您可以创建自己的管道

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/ingest.html

感谢。