在索引期间将一个字段的值复制到另一个字段

时间:2015-03-19 09:11:09

标签: postgresql elasticsearch

要索引数据,我们必须创建一个包含其他字段值的字段的文档。我们从多个表中获取数据。

表A
ID
命名
CREATE_DATE
UPDATE_DATE
出价

表B
投标
BNAME
标题

release_date

表C
CID
投标
FNAME
L-NAME ...

根据要求,所提交的所有权应具有其他领域的价值

Ex: - “title”:[title,create_date,update_date,source]

请建议我们可以进行弹性搜索。如果可能的话,我们将如何实现它,因为我们正在使用河流插件来索引数据

PUT /_river/person/_meta
{
"type": "jdbc",
"jdbc": {
     "url": "jdbc:postgresql://localhost:5432/test",
    "user": "postgres",
    "password": "postgres",
    "sql":" query to get data"
    "index": "test_search",
    "type": "person"
},
"bulk_size" : 10000,
"flush_interval" : "2m"
   }

由于

1 个答案:

答案 0 :(得分:0)

您可以使用Elasticsearch映射中的title功能将字段复制到copy_to字段中:

  

将copy_to参数添加到任何字段映射将导致将此字段的所有值复制到参数中指定的字段。在以下示例中,字段title和abstract中的所有值都将复制到字段meta_data。

http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-core-types.html#copy-to

首先在Elasticsearch中创建一个带有mappping的索引。当updatedDate文档被编入索引时,此映射正在将createdDatesourcetitle复制到person字段中。

POST /demo
{
    "mappings": {
        "person": {
            "properties": {
                "title": {
                    "type": "string"
                },
                "createdDate": {
                    "type": "string",
                    "copy_to": "title"
                },
                "updatedDate": {
                    "type": "string",
                    "copy_to": "title"
                },
                "source": {
                    "type": "string",
                    "copy_to": "title"
                }
            }
        }
    }
}

现在索引文档(您的河流将索引文档,但要测试此方法,您可以手动索引文档):

POST /demo/person/1
{
    "title": "test title",
    "updatedDate": "2011-09-30",
    "createdDate": "2011-09-30",
    "source": "person source"
}

如果您在title字段中搜索source字段中的值,则会有匹配项。

POST /demo/person/_search
{
    "query": {
        "match": {
            "title": "person"
        }
    }
}