Legacy Knowledge Base
Published Jul. 2, 2025

No results are returned when searching for a specific term because it is a Elasticsearch stopword

Written By

Jose L. Bango

How To articles are not official guidelines or officially supporteddocumentation. They are community-contributed content and may not alwaysreflect the latest updates to Liferay DXP. We welcome your feedback toimprove How to articles!

While we make every effort to ensure this Knowledge Base is accurate, itmay not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with anyfeedback or concerns.

Legacy Article

You are viewing an article from our legacy "FastTrack"publication program, made available for informational purposes. Articlesin this program were published without a requirement for independentediting or verification and are provided "as is" withoutguarantee.

Before using any information from this article, independently verify itssuitability for your situation and project.

Issue

  • When searching for a specific term, no results are returned despite the fact that there should be some matches.
  • How to configure Elasticsearch stopwords.

Environment

  • Liferay DXP 7.07.4
  • Elasticsearch 2.x7.x

Resolution

  • By default, Elasticsearch removes some words from token streams. These words are known as stop words.
  • If the search term you are using appears in the list for a given language, say Spanish, you need to customize your stop word list to allow that word and, therefore, get results when searching for that term.
  • To tackle this, you can redefine your analyzer for that language and customize the stop filter.

How to reimplement your language-x analyzer customizing the stop filter

  • Imagine we are using Spanish language and we want to remove "nada" (meaning nothing) from the list.
  • First of all, download the current list (spanish_stop.txt) and edit it as desired. In our case, removing the line where "nada" appears.
  • Then, copy the spanish analyzer from Elasticsearch reference and customize it to meet your needs. For example (it may need to be adapted to your own use case):
    {
    "analysis": {
    "filter": {
    "spanish_stop": {
    "type": "stop",
    "stopwords_path": "spanish_stop.txt"
    },
    "spanish_stemmer": {
    "type": "stemmer",
    "language": "light_spanish"
    }
    },
    "analyzer": {
    "spanish": {
    "tokenizer": "standard",
    "filter": [
    "lowercase",
    "spanish_stop",
    "spanish_stemmer"
    ]
    }
    }
    }
    }
    Note that we have changed stopwords for stopwords_path (see Configurable parameters).
  • Once our analyzer is ready, we have to apply it:
    1. Navigate to Control Panel → Configuration → System Settings
    2. Find the Elasticsearch entry. Click to edit.
    3. Go to "Additional Index Configurations" and copy the JSON fragment with your custom analyzer there.
    4. Save your changes.
    5. Execute a full reindex in order to apply your new analyzer.

Additional Information

Did this article resolve your issue ?

Legacy Knowledge Base