具有以下映射:
curl -XPUT 'localhost:9200/borrador' -d '{
"mappings": {
"item": {
"dynamic": "strict",
"properties" : {
"title" : { "type" : "string" },
"body" : { "type": "string" },
"source_id" : { "type": "integer" },
}}}}'
我使用以下Elasticsearch-JDBC importer脚本从我的数据库导入所有数据
#!/bin/sh
bin=/usr/share/elasticsearch/elasticsearch-jdbc-2.1.1.2/bin
lib=/usr/share/elasticsearch/elasticsearch-jdbc-2.1.1.2/lib
echo "Indexando base de datos..."
echo '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mydbip/mydbname",
"user" : "username",
"password" : "pw",
"sql" : "select source_id, body, id as _id from table_name",
"index" : "borrador",
"type" : "item",
"detect_json": false
}
}' | java \
-cp "${lib}/*" \
-Dlog4j.configurationFile=${bin}/log4j2.xml \
org.xbib.tools.Runner \
org.xbib.tools.JDBCImporter
问题是,我正在寻找一个符合我的方法的analyzer
,但我有点迷失:我正在寻找一种方法使用可以适应多种语言的analyzer
。
这意味着有时DB的条目是西班牙语,英语或任何其他语言。用户将数据添加到数据库中,因此它可以是任何语言,并且语言本身也不存储,这意味着我无法知道哪种语言具有当前条目。此外,这些语言并不混合(没有一行有两种不同的语言)。
归档此目标的最佳方法是什么?对所有语言使用通用分析器会更好,还是最好为每种语言构建不同的分析器?如果有人向我提供了analyzer
的映射,我们将非常感激。
答案 0 :(得分:0)
您可以尝试为使用的每种语言使用多字段body.en
,body.fr
,...
例如:
"properties": {
"body" : {
"type": "string",
"fields": {
"fr": {
"type": "string",
"analyzer": "french"
},
"en": {
"type": "string",
"analyzer": "english"
},
"es": {
"type": "string",
"analyzer": "spanish"
},
"de": {
"type": "string",
"analyzer": "german"
},
"pt": {
"type": "string",
"analyzer": "portuguese"
},
"nl": {
"type": "string",
"analyzer": "dutch"
},
"dk": {
"type": "string",
"analyzer": "danish"
}
}
}