# Create index with ngram filter fails with embedded node

**URL:** <https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048>\
**Category:** Elasticsearch\
**Created:** [May 31, 2018, 12:42pm UTC](https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048 "2018-05-31T12:42:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ilBepi](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@ilBepi](https://discuss.elastic.co/u/ilBepi)\
**Post date:** [May 31, 2018, 12:42pm UTC](https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048/1 "2018-05-31T12:42:06Z")

</div>

Hello,  
I am creating an Elasticsearch local cluster in Java in the following way:

```
        Settings.Builder settingsBuilder = Settings.builder();

        settingsBuilder.put("http.enabled", "false");
        settingsBuilder.put("cluster.name", esearchConfig.getClusterName() +
            (esearchConfig.isEnableTemporaryMode() ? "-transient" : ""));
        settingsBuilder.put("node.name", esearchConfig.getNodeName() +
            (esearchConfig.isEnableTemporaryMode() ? "-transient" : ""));            
        settingsBuilder.put("node.data", "true");
        settingsBuilder.put("node.master", "true");
        settingsBuilder.put("action.auto_create_index", "false");
        settingsBuilder.put("transport.bind_host", "127.0.0.1");
        settingsBuilder.put("transport.tcp.port", 1312);
        settingsBuilder.put("http.bind_host", "127.0.0.1");
        settingsBuilder.put("http.port", 1313);

        Collection<Class<? extends Plugin>> plugins = Arrays.asList(Netty4Plugin.class);
        Node elasticSearchInternalNode = new ElasticSearchNode(settingsBuilder.build(), plugins);
        elasticSearchInternalNode.start();

```

Where ElasticSearchNode is a simple class that extends node and has the following constructor:

```
	public ElasticSearchNode(Settings settings, Collection<Class<? extends Plugin>> plugins) {
        super(InternalSettingsPreparer.prepareEnvironment(settings, null), plugins);
    }

```

Then I try to create an index with a nGram filter:

```
:curl -X PUT "localhost:1313/test04" -H 'Content-Type: application/json' -d'{
"settings" : {
    "index" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 2
    }, 
	"analysis": { 
		"filter": { 
			"short_ngram_filter": { 
				"type": "nGram", 
				"min_gram": "3", 
				"max_gram": "3"
			} 
		} 
	}
}}'

```

But it fails:

```
{
"error": {
	"root_cause": [{
			"type": "illegal_argument_exception",
			"reason": "Unknown filter type [nGram] for [short_ngram_filter]"
		}
	],
	"type": "illegal_argument_exception",
	"reason": "Unknown filter type [nGram] for [short_ngram_filter]"
},
"status": 400

```

}

The very weird thing is that using a nGram tokenizer works perfectly, for example:

```
curl -X PUT "localhost:1313/test04" -H 'Content-Type: application/json' -d'{ 
"settings" : {
"index" : {
    "number_of_shards" : 3,
    "number_of_replicas" : 2
}, 
"analysis": { 
	"tokenizer": { 
		"short_ngram_tokenizer": { 
			"type": "nGram", 
			"min_gram": "3", 
			"max_gram": "3"
		} 
	} 
  }
}}'

```

Does anyone have any idea of what I am doing wrong?  
I am using ElasticSearch 6.2.4.

Thanks very much

Giuseppe

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 31, 2018, 1:24pm UTC](https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048/2 "2018-05-31T13:24:23Z")

</div>

Starting elasticsearch embedded is not supported and this won't work.

Why do you want to start elasticsearch that way?

---

<div class="post-metadata">

**Author:** ![ilBepi](https://avatars.discourse-cdn.com/v4/letter/i/67e7ee/32.png) [@ilBepi](https://discuss.elastic.co/u/ilBepi)\
**Post date:** [May 31, 2018, 1:31pm UTC](https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048/3 "2018-05-31T13:31:44Z")

</div>

Hello @dadoonet, thanks for your answer.  
I know that it is not supported, but unfortunately I have to work with code that starts elasticsearch that way and I cannot change it for now  
I am trying to migrate it to Elasticsearch 6.2.4.  
Anyway, it seems very strange to me that creating an index with an nGram tokenizer works but with an nGram filter it does not.  
I would like to know if anyone has any idea about that.  
Thanks very much.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [May 31, 2018, 1:50pm UTC](https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048/4 "2018-05-31T13:50:26Z")

</div>

You can't do it IMO. Or it will require a lot of manual efforts.  
Because you are missing a library which is not available on maven central or in elasticsearch maven repository.

---

<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, 2018, 1:50pm UTC](https://discuss.elastic.co/t/create-index-with-ngram-filter-fails-with-embedded-node/134048/5 "2018-06-28T13:50:40Z")

</div>

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