# Create a custom id from a a database columns

**URL:** <https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350>\
**Category:** Logstash\
**Created:** [December 18, 2018, 2:40pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350 "2018-12-18T14:40:36Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![tunigas](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@tunigas](https://discuss.elastic.co/u/tunigas)\
**Post date:** [December 18, 2018, 2:40pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/1 "2018-12-18T14:40:36Z")

</div>

Hello everyone,

I'm new to logstash. Currently, I'm trying to create a custom document\_id from the concatenation of two database columns.  
My sql query inside the jdbc is as follows:  
statement =\> "SELECT TOP 10 name, age, address FROM ECRITURE"

and my output is as follows:

output {  
elasticsearch {  
document\_id =\> "%{name}%{address}"  
}

But, instead of getting a custom id composed of the name and the address, I only get the string "%{name}%{address}".  
Anyone has an idea to how to treat this problem? Thank you

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [December 18, 2018, 2:56pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/2 "2018-12-18T14:56:30Z")

</div>

What does the generated event look like? Does it have the fields you expect it to?

---

<div class="post-metadata">

**Author:** ![tunigas](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@tunigas](https://discuss.elastic.co/u/tunigas)\
**Post date:** [December 18, 2018, 3:03pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/3 "2018-12-18T15:03:27Z")

</div>

Thank you for your reply. yes it does It looks like this.

{  
"@timestamp" =\> 2018-12-18T14:48:01.251Z,  
"name" =\> "random\_name",  
"age" =\> 10,  
"address" =\> "Paris",  
"@version" =\> "1"  
}

and I get the following document id : "%{name}%{adress}" instead of random\_nameParis.

If I understand the problem correctly, I need to pass the values of the columns from the jdbc to the output. I thought that calling them with the "%{column\_name}" is enough. But, it doesn't work.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [December 18, 2018, 3:08pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/4 "2018-12-18T15:08:42Z")

</div>

Looks fine to me. Does it make any difference if you instead use `document_id => "%{[name]}%{[address]}"`?

---

<div class="post-metadata">

**Author:** ![tunigas](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@tunigas](https://discuss.elastic.co/u/tunigas)\
**Post date:** [December 18, 2018, 3:12pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/5 "2018-12-18T15:12:47Z")

</div>

I got the following id back "%{[name]}%{[address]}".  
Logstash still treats it as a string

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [December 18, 2018, 3:13pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/6 "2018-12-18T15:13:53Z")

</div>

Which version of the stack are you using?

---

<div class="post-metadata">

**Author:** ![tunigas](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@tunigas](https://discuss.elastic.co/u/tunigas)\
**Post date:** [December 18, 2018, 3:14pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/7 "2018-12-18T15:14:30Z")

</div>

The latest version

---

<div class="post-metadata">

**Author:** ![tunigas](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@tunigas](https://discuss.elastic.co/u/tunigas)\
**Post date:** [December 18, 2018, 3:37pm UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/8 "2018-12-18T15:37:18Z")

</div>

Sorry, it is actually the 6.4.0

---

<div class="post-metadata">

**Author:** ![tunigas](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@tunigas](https://discuss.elastic.co/u/tunigas)\
**Post date:** [December 19, 2018, 10:21am UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/9 "2018-12-19T10:21:01Z")

</div>

Problem Solved.  
Just in case someone else have the same problem, you only need to add an alias to the columns of the sql statement and then use those aliases in the output like this "%{alias\_name}%{alias\_address}"

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 16, 2019, 10:21am UTC](https://discuss.elastic.co/t/create-a-custom-id-from-a-a-database-columns/161350/10 "2019-01-16T10:21:02Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
