# Help on script score query with filter script

**URL:** https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751
**Category:** Elasticsearch
**Created:** [January 29, 2022, 1:48pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751 "2022-01-29T13:48:22Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![scharom16](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/scharom16/32/101064_2.png) [@scharom16](https://discuss.elastic.co/u/scharom16)
#### Post date: [January 29, 2022, 1:48pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/1 "2022-01-29T13:48:22Z")

</div>

Hi elastic community,

I need some guidance on the following query. I am using the Python Elasticsearch client and when executing the query it returns a 'search\_phase\_execution\_exception' with no further guidance. Can you spot the error in the body?

```auto
{
            "size": size,
            "query": {
                "script_score": {
                    "query": {
                        "bool": {
                            "filter": {
                                "script": {
                                    "script": {
                                        "source": "doc['sentence_text'].size() > params.min_length",
                                        "params": {
                                            "min_length": min_length
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "script": {
                        "source": "cosineSimilarity(params.queryVector,'sentence_vector') + 1.0",
                        "params": {
                            "queryVector": sentence_embedding
                        }
                    }
                }
            }
        }

```

---

<div class="post-metadata">

### Author: ![scharom16](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/scharom16/32/101064_2.png) [@scharom16](https://discuss.elastic.co/u/scharom16)
#### Post date: [January 29, 2022, 2:24pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/2 "2022-01-29T14:24:54Z")

</div>

I managed query Elasticsearch using curl and got some more info.

```auto
{
  "error" : {
    "root_cause" : [
      {
        "type" : "script_exception",
        "reason" : "runtime error",
        "script_stack" : [
          "org.elasticsearch.index.mapper.TextFieldMapper$TextFieldType.fielddataBuilder(TextFieldMapper.java:814)",
          "org.elasticsearch.index.fielddata.IndexFieldDataService.getForField(IndexFieldDataService.java:109)",
          "org.elasticsearch.index.query.SearchExecutionContext.lambda$lookup$2(SearchExecutionContext.java:503)",
          "org.elasticsearch.search.lookup.SearchLookup.getForField(SearchLookup.java:105)",
          "org.elasticsearch.search.lookup.LeafDocLookup$1.run(LeafDocLookup.java:72)",
          "org.elasticsearch.search.lookup.LeafDocLookup$1.run(LeafDocLookup.java:69)",
          "java.base/java.security.AccessController.doPrivileged(AccessController.java:318)",
          "org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:69)",
          "org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:27)",
          "doc['sentence_text'].length() > params.min_length",
          " ^---- HERE"
        ],
        "script" : "doc['sentence_text'].length() > params.min_length",
        "lang" : "painless",
        "position" : {
          "offset" : 4,
          "start" : 0,
          "end" : 49
        }
      }
    ],
    "type" : "search_phase_execution_exception",
    "reason" : "all shards failed",
    "phase" : "query",
    "grouped" : true,
    "failed_shards" : [
      {
        "shard" : 0,
        "index" : "conc",
        "node" : "UGH_0oVATf6s32PygGpEgg",
        "reason" : {
          "type" : "script_exception",
          "reason" : "runtime error",
          "script_stack" : [
            "org.elasticsearch.index.mapper.TextFieldMapper$TextFieldType.fielddataBuilder(TextFieldMapper.java:814)",
            "org.elasticsearch.index.fielddata.IndexFieldDataService.getForField(IndexFieldDataService.java:109)",
            "org.elasticsearch.index.query.SearchExecutionContext.lambda$lookup$2(SearchExecutionContext.java:503)",
            "org.elasticsearch.search.lookup.SearchLookup.getForField(SearchLookup.java:105)",
            "org.elasticsearch.search.lookup.LeafDocLookup$1.run(LeafDocLookup.java:72)",
            "org.elasticsearch.search.lookup.LeafDocLookup$1.run(LeafDocLookup.java:69)",
            "java.base/java.security.AccessController.doPrivileged(AccessController.java:318)",
            "org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:69)",
            "org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:27)",
            "doc['sentence_text'].length() > params.min_length",
            " ^---- HERE"
          ],
          "script" : "doc['sentence_text'].length() > params.min_length",
          "lang" : "painless",
          "position" : {
            "offset" : 4,
            "start" : 0,
            "end" : 49
          },
          "caused_by" : {
            "type" : "illegal_argument_exception",
            "reason" : "Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [sentence_text] in order to load field data by uninverting the inverted index. Note that this can use significant memory."
          }
        }
      }
    ]
  },
  "status" : 400
}

```

---

<div class="post-metadata">

### Author: ![Tomo\_M](https://avatars.discourse-cdn.com/v4/letter/t/848f3c/32.png) [@Tomo\_M](https://discuss.elastic.co/u/Tomo_M)
#### Post date: [January 29, 2022, 3:14pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/3 "2022-01-29T15:14:18Z")

</div>

In [filter context](https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-filter-context.html), `_source` is not accessible from `params`, which is not explicitly explaind in documents.

> <https://stackoverflow.com/questions/54022283/elasticsearch-search-query-why-params-source-nested-field-size-is-not-workin/65810028#65810028>

---

<div class="post-metadata">

### Author: ![scharom16](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/scharom16/32/101064_2.png) [@scharom16](https://discuss.elastic.co/u/scharom16)
#### Post date: [January 29, 2022, 3:16pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/4 "2022-01-29T15:16:35Z")

</div>

I do not access `_source` in `params`.

---

<div class="post-metadata">

### Author: ![Tomo\_M](https://avatars.discourse-cdn.com/v4/letter/t/848f3c/32.png) [@Tomo\_M](https://discuss.elastic.co/u/Tomo_M)
#### Post date: [January 29, 2022, 3:18pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/5 "2022-01-29T15:18:10Z")

</div>

Sorry I jumped the logic, text field doesn't indexed to `doc_values`, therefore it is not accessible via `doc.field` accessor. And also it can't be accessed from `params._source.field`.

> **[Accessing document fields and special variables | Elasticsearch Guide \[7.16\]...](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-fields.html#modules-scripting-stored)**

---

<div class="post-metadata">

### Author: ![scharom16](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/scharom16/32/101064_2.png) [@scharom16](https://discuss.elastic.co/u/scharom16)
#### Post date: [January 29, 2022, 3:22pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/6 "2022-01-29T15:22:30Z")

</div>

Np, thank you @Tomo_M. I solved my issue by enabling on the field 'sentence\_text', which is a text field, `fielddata` as described [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/text.html#enable-fielddata-text-fields).

---

<div class="post-metadata">

### Author: ![Tomo\_M](https://avatars.discourse-cdn.com/v4/letter/t/848f3c/32.png) [@Tomo\_M](https://discuss.elastic.co/u/Tomo_M)
#### Post date: [January 29, 2022, 3:26pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/7 "2022-01-29T15:26:02Z")

</div>

Yes, turn\_on `fielddata` is one of the solution. Note that it contains analyzed tokens and the length is something different from the exact length of the sentence.

If [turning on fielddata cause some problem](https://www.elastic.co/guide/en/elasticsearch/reference/current/text.html#before-enabling-fielddata), consider use ingest pipeline to add a field representing length of a text field.

---

<div class="post-metadata">

### Author: ![scharom16](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/scharom16/32/101064_2.png) [@scharom16](https://discuss.elastic.co/u/scharom16)
#### Post date: [January 29, 2022, 3:30pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/8 "2022-01-29T15:30:57Z")

</div>

> [@Tomo\_M](#):
>
> Note that it contains analyzed tokens

Nice, you already answered the next question.

It is a research project for university, so efficiency is not an issue.

---

<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: [February 26, 2022, 3:30pm UTC](https://discuss.elastic.co/t/help-on-script-score-query-with-filter-script/295751/9 "2022-02-26T15:30:59Z")

</div>

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