# Order By eliminar resultados que cominzan con caracter determinado

**URL:** <https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550>\
**Category:** Elastic en Español\
**Created:** [January 8, 2018, 3:27pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550 "2018-01-08T15:27:52Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![leandrobara](https://avatars.discourse-cdn.com/v4/letter/l/b3f665/32.png) [@leandrobara](https://discuss.elastic.co/u/leandrobara)\
**Post date:** [January 8, 2018, 3:27pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/1 "2018-01-08T15:27:52Z")

</div>

Estimados, cuando hago un order by quiero que los resultados que comienzan con acento o caracteres raro, no los muestre. Por ejemplo si hago un order by Z-A quiero que me excluya todos los resultados que comienzan con comillas "" o con un caracter determinado. Muchas gracias!

---

<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:** [January 8, 2018, 4:50pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/2 "2018-01-08T16:50:33Z")

</div>

I moved your question to #in-your-native-tongue:elastic-en-espanol as I guess it's the right place for it.

If you don't get an answer here, please go back to #elasticsearch but in english please.

---

<div class="post-metadata">

**Author:** ![gmoskovicz](https://avatars.discourse-cdn.com/v4/letter/g/ecae2f/32.png) [@gmoskovicz](https://discuss.elastic.co/u/gmoskovicz)\
**Post date:** [January 8, 2018, 5:06pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/3 "2018-01-08T17:06:11Z")

</div>

Hola Leandro,

Me gustaria que me muestres algun ejemplo para poder entenderlo mejor. Tienes algunos documentos que me puedas mostrar por favor para entender mejor esta pregunta?

Saludos!

--Gabriel

---

<div class="post-metadata">

**Author:** ![leandrobara](https://avatars.discourse-cdn.com/v4/letter/l/b3f665/32.png) [@leandrobara](https://discuss.elastic.co/u/leandrobara)\
**Post date:** [January 8, 2018, 5:17pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/4 "2018-01-08T17:17:53Z")

</div>

Hola, gracias por responder. Por ejemplo yo necesito que los libros que empiezan con A esten adelante de los que empiezan con caracteres no alfanumericos.

[https://www.bajalibros.com/AR/Buscar?q=amor&sort=title.raw:asc&field=6&page=1](https://www.bajalibros.com/AR/Buscar?q=amor&sort=title.raw:asc&field=6&page=1)

[https://www.bajalibros.com/AR/Buscar?q=amor&sort=title.raw:asc&field=6&page=8](https://www.bajalibros.com/AR/Buscar?q=amor&sort=title.raw:asc&field=6&page=8)

Espero tu ayuda.

---

<div class="post-metadata">

**Author:** ![gmoskovicz](https://avatars.discourse-cdn.com/v4/letter/g/ecae2f/32.png) [@gmoskovicz](https://discuss.elastic.co/u/gmoskovicz)\
**Post date:** [January 8, 2018, 6:35pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/5 "2018-01-08T18:35:14Z")

</div>

Hola Leandro,

Lo que quieres es removerlos completamente? O lo que quieres es que aparezcan al final?

Saludos!  
--Gabriel

---

<div class="post-metadata">

**Author:** ![leandrobara](https://avatars.discourse-cdn.com/v4/letter/l/b3f665/32.png) [@leandrobara](https://discuss.elastic.co/u/leandrobara)\
**Post date:** [January 8, 2018, 6:37pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/6 "2018-01-08T18:37:50Z")

</div>

Idealmente que se vean al final. Osea A-Z-Caracteres / Z-A-Caracteres.

Se puede?

Gracias!

---

<div class="post-metadata">

**Author:** ![gmoskovicz](https://avatars.discourse-cdn.com/v4/letter/g/ecae2f/32.png) [@gmoskovicz](https://discuss.elastic.co/u/gmoskovicz)\
**Post date:** [January 8, 2018, 7:31pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/7 "2018-01-08T19:31:07Z")

</div>

Hola Leandro,

Elasticsearch siempre va a hacer sorting segun el valor asciii the los caracteres. Y obviamente las tablas muestran de que esos caracteres no-alfabeticos estan generalmente al principio. Una idea para hacer esto automaticamente seria utilizar un normalizer para modificar con un caracter que se muestre al final:

```auto
DELETE index

PUT index
{
  "settings": {
    "analysis": {
      "normalizer": {
        "my_normalizer": {
          "type": "custom",
          "char_filter": [
            "my_char_filter"
          ],
          "filter": [
            "lowercase"
          ]
        }
      },
      "char_filter": {
        "my_char_filter": {
          "type": "pattern_replace",
          "pattern": "[^a-zA-Z]",
          "replacement": "~"
        }
      }
    }
  },
  "mappings": {
    "type": {
      "properties": {
        "title": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword",
              "normalizer": "my_normalizer"
            }
          }
        }
      }
    }
  }
}

PUT index/type/1
{
  "title": "a title"
}

PUT index/type/2
{
  "title": "b title"
}

PUT index/type/3
{
  "title": "#title"
}

POST index/_refresh

GET index/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "title.raw": {
        "order": "asc"
      }
    }
  ]
}

```

El resultado es:

```auto

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": null,
    "hits": [
      {
        "_index": "index",
        "_type": "type",
        "_id": "1",
        "_score": null,
        "_source": {
          "title": "a title"
        },
        "sort": [
          "a~title"
        ]
      },
      {
        "_index": "index",
        "_type": "type",
        "_id": "2",
        "_score": null,
        "_source": {
          "title": "b title"
        },
        "sort": [
          "b~title"
        ]
      },
      {
        "_index": "index",
        "_type": "type",
        "_id": "3",
        "_score": null,
        "_source": {
          "title": "#title"
        },
        "sort": [
          "~title"
        ]
      }
    ]
  }
}

```

Pero esto funciona solo para `asc` y para `desc` deberias de utilizar, de lo contrario, un caracter que aparezca al principio de la tabla ascii. Toma en cuenta que esto esta modificando todos los valores del field `raw`, entonces tal vez quieras corroborar esto y tal vez crear otro field a parte del `raw`.

Por otro lado, si siempre quieres estos caracteres separados tal vez convenga hacer dos queries, y siempre mostrar los ultimos resultados estos, pero eso complicaria aun mas el tema. Otra posibilidad tambien es utilizar un `function score` para detectar los no-alfabeticos.

Saludos!  
--Gabriel

---

<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 5, 2018, 7:31pm UTC](https://discuss.elastic.co/t/order-by-eliminar-resultados-que-cominzan-con-caracter-determinado/114550/8 "2018-02-05T19:31:09Z")

</div>

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