我有一个简单的<code>csv<code>文件,它有4个字段,serial_num、post_code、lat、lon,例如:
serial_num,post_code,LAT,LON
06AA209365,PE10 2AZ,532342,168459
98A819621,PE10 1AA,532342,168459
07FD490906,PE12 1VV,497882,157983
我需要批量插入到< code>elasticsearch中。lat lon字段需要在单个geo_point字段中定义,因此我创建了如下映射:
>
类型为widget
PUT /serial_data
{
"mappings": {
"widget": {
"properties": {
"serial_number": {
"type": "string"
},
"post_code": {
"type": "string"
},
"location": {
"type": "geo_point"
}
}
}
}}
我试图使用embulk
来插入数据,因为我认为我有一个定义的映射。如果我将lat定义为双精度或long,那么embulk
将解析lat,长到单个位置,它不会,我过于乐观。
我还认为< code>embulk有一个批量输入json插件,但是我找不到它。
问题
关于如何批量加载这些数据的任何想法都将非常感激。
我使用tree filte插件。
数据.csv
serial_num,post_code,LAT,LON
06AA209365,PE10 2AZ,532342,168459
98A819621,PE10 1AA,532342,168459
07FD490906,PE12 1VV,497882,157983
conf.yml
in:
type: file
path_prefix: data.csv
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: '"'
trim_if_not_quoted: false
skip_header_lines: 1
allow_extra_columns: false
allow_optional_columns: false
columns:
- {name: serial_num, type: string}
- {name: post_code, type: string}
- {name: lat, type: long}
- {name: lon, type: long}
filters:
- type: insert
column:
location:
- type: ruby_proc
requires:
- json
columns:
- name: location
proc: |
->(_,record) do
return { lat: record["lat"], lon: record["lon"] }.to_json.to_s
end
skip_nil: false
- type: column
columns:
- {name: serial_num}
- {name: post_code}
- {name: location}
out: {type: stdout}
输出
+-------------------+------------------+-----------------------------+
| serial_num:string | post_code:string | location:string |
+-------------------+------------------+-----------------------------+
| 06AA209365 | PE10 2AZ | {"lat":532342,"lon":168459} |
| 98A819621 | PE10 1AA | {"lat":532342,"lon":168459} |
| 07FD490906 | PE12 1VV | {"lat":497882,"lon":157983} |
+-------------------+------------------+-----------------------------+
我有一个使用spring数据elasticsearch库的项目。我的系统返回了结果,但我想知道如何以域POJO类的形式获得结果。 我没有看到太多关于如何实现这一点的文档,但我不知道应该在谷歌上搜索什么正确的问题。 目前,我的代码是这样的,在我的测试中,它检索正确的结果,但不是作为POJO。 非常感谢您的帮助。
我正在尝试在多个集群(而不是节点)中插入记录。我正在使用spring-data-elastic search(版本2.0.4.version)。我尝试使用不同bean名称在配置中创建2个elasticsearchoperation实例。我正在尝试使用带有索引(IndexQuery IndexQuery)方法的对象进行插入。但当我尝试插入时,我无法保持字段的映射(非分析字段类型)。可以有人请帮助我如
我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。
我使用的是springboot 2.2.6、Elastic Search 5.6.13,我决定升级到springboot 2.4.1、Elastic Search 7.10。我在ES中存储复杂的文档,以枚举作为值和映射键。对于枚举和字符串(加上自定义序列化器)之间的所有序列化,我使用的是自定义实体映射器和自定义配置的jackson ObjectMapper。 在ES4中,Elasticsearch
当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa
我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?