Help me in searching hyphen contains parts

Hi All,

I am working on Searching parts in elasticsearch I have elasticsearch version 5.1.1 with me.the index has contains partNumbers which has values like 044-1215S etc.. and mostly it contains dots and special characters. I have built the following analyzer for this to support the criteria

PUT /test
{
"settings": {
"number_of_shards": 1,
"analysis": {
"filter": {
"ngram_filter": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 20
}
},
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"ngram_filter"
]
}
}
}
},
"mappings": {
"p1":{
"properties": {
"partNumber":{
"type": "text",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard"
}
}
}
}
}

  • All my partial matches working.
  • but term queries not working with hyphen it is considering at all when i checked analyzer .

can a term query will work on this ? is there any special analyzers which can work with all most of the special characters that lucene allowed.

Thanks in advance

A term query can work with this, but a term query input does not undergo analysis, so the search query input will be querying against input that has been analyzed at index time with the ngram_analyzer.

What perhaps you may want to do is map partNumber as a multi_field where one field uses the ngram_analyzer to support partial matches, and another field is mapped as a keyword type, to support verbatim matches.

Hi ,

Thank you for the suggestions yes this way i will try . and one more doubt is there any flexibility to search words like (hyphen contained parts ) 45-5 in part 4558945-563 can we form tokenize or methods to make the above search please advice.

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