# Variable in path

**URL:** <https://discuss.elastic.co/t/variable-in-path/183307>\
**Category:** Logstash\
**Created:** [May 29, 2019, 10:46am UTC](https://discuss.elastic.co/t/variable-in-path/183307 "2019-05-29T10:46:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sam\_Kisada](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_kisada/32/44452_2.png) [@Sam\_Kisada](https://discuss.elastic.co/u/Sam_Kisada)\
**Post date:** [May 29, 2019, 10:46am UTC](https://discuss.elastic.co/t/variable-in-path/183307/1 "2019-05-29T10:46:21Z")

</div>

Hi!  
I need some help with declaring variable in dicrianary\_path  
I have few filebeats which sending data to logstash from few different sources. Data is separeted to dictianary and raw, there is no chance to change it becouse of data current size

I have parsed dictianary by script and get files named per source like this  
`${base_id}_dictionary.yml`

> sample:  
> 85866397-9ed7-4b10-ae86-31f6878f7fd2\_dictionary.yml  
> a48ad896-1b19-47d7-bd6f-8396ff92d181\_dictionary.yml  
> ........

Id, which contains in it, may be the same per source, but data may not

sample:

file1

> 8 : "96000-ws095"  
> 9 : "96000-WS634"  
> 10 : "90500-ws002"

file2

> 8 : "9990-wt095"  
> 9 : "965000-t34"  
> 10 : "90500-q12"

I get base id using grok, but i cant use it in dicrtianory\_path

```
translate {
        field => "[base_id]"
        destination => "[base_name]"
        dictionary_path => "C:\elk\yml\%{base_id}_list.yml"
        refresh_interval => 104
        fallback => "Nothing to match!"

```

error:

```
 filter {
    translate {
      # This setting must be a path
      # File does not exist or cannot be opened C:\elk\yml\%{base_id}_list.yml
      dictionary_path => "C:\\elk\\yml\\%{base_id}_list.yml"
      ...

```

and another error  
`Cannot evaluate ${base_id}`

Can i declare ${base\_id}= (some field) in if ? Or there is another solution?

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [May 29, 2019, 12:08pm UTC](https://discuss.elastic.co/t/variable-in-path/183307/2 "2019-05-29T12:08:43Z")

</div>

> [@Sam\_Kisada](#):
>
> I get base id using grok, but i cant use it in dicrtianory\_path

Correct. The translate filter does [not](https://github.com/logstash-plugins/logstash-filter-translate/blob/29fad8d18acd8bf6845e53796f5be68538d5670d/lib/logstash/filters/dictionary/yaml_file.rb#L20) do sprintf processing before opening the file.

---

<div class="post-metadata">

**Author:** ![Sam\_Kisada](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sam_kisada/32/44452_2.png) [@Sam\_Kisada](https://discuss.elastic.co/u/Sam_Kisada)\
**Post date:** [May 30, 2019, 8:21am UTC](https://discuss.elastic.co/t/variable-in-path/183307/3 "2019-05-30T08:21:08Z")

</div>

Thanks for reply mr Badger=)  
any tips or ideas?  
Mayby [this](https://www.elastic.co/guide/en/logstash/current/plugins-filters-environment.html#plugins-filters-environment)?

Current workaround is big dictionary with modifed id :  
'$host\_$source\_$id' : 'data'

---

<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:** [May 31, 2019, 8:24am UTC](https://discuss.elastic.co/t/variable-in-path/183307/4 "2019-05-31T08:24:16Z")

</div>

It loads the file at startup so can not use data from events. Your workaround is what I would recommend.

---

<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:** [June 28, 2019, 8:24am UTC](https://discuss.elastic.co/t/variable-in-path/183307/5 "2019-06-28T08:24:17Z")

</div>

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