# No puedo filtrar por un campo

**URL:** <https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011>\
**Category:** Elastic en Español\
**Created:** [November 11, 2020, 6:25am UTC](https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011 "2020-11-11T06:25:29Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![edu1](https://avatars.discourse-cdn.com/v4/letter/e/9f8e36/32.png) [@edu1](https://discuss.elastic.co/u/edu1)\
**Post date:** [November 11, 2020, 6:25am UTC](https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011/1 "2020-11-11T06:25:29Z")

</div>

Estoy indexando informacion de usuarios en elastic. Puedo filtrar por todos los campos pero, en el caso del codigo postal, elastic nunca retorna nada.

---

<div class="post-metadata">

**Author:** ![Imma](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/imma/32/32013_2.png) [@Imma](https://discuss.elastic.co/u/Imma)\
**Post date:** [November 11, 2020, 6:40am UTC](https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011/2 "2020-11-11T06:40:46Z")

</div>

¿Puedes compartir el [mapping](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html) de ese índice, algun ejemplo de documento indexado (sin datos confidenciales), y un ejemplo de como haces el filtrado?

¿Filtras usando una query en Elasticsearch o en Kibana?

---

<div class="post-metadata">

**Author:** ![edu1](https://avatars.discourse-cdn.com/v4/letter/e/9f8e36/32.png) [@edu1](https://discuss.elastic.co/u/edu1)\
**Post date:** [November 11, 2020, 8:25pm UTC](https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011/3 "2020-11-11T20:25:40Z")

</div>

Aqui está una parte del mapping. puedo filtrar por cualquier propiedad menos por zipCode. Para las queries estoy usando una bibliteca en Java pero copié la consulta que genera y estoy usando un cliente dentro del IDE.

```auto
{
  "user": {
    "mappings": {
      "properties": {
        "city": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search"
        },
        "countryCode": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "emailAddress": {
          "type": "text",
          "fields": {
            "custom": {
              "type": "text",
              "analyzer": "my_email_analyzer"
            }
          },
          "analyzer": "standard",
          "search_analyzer": "my_email_analyzer"
        },
        "familyName": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search"
        },
        "genderCode": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "givenName": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search"
        },
        "zipCode": {
          "type": "text",
          "analyzer": "autocomplete",
          "search_analyzer": "autocomplete_search"
        }
      }
    }
  }
}

```

este es un ejemplo de query:

```auto
  "timeout": "60s",
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "multi_match": {
                  "query": "female",
                  "fields": [
                    "givenName^1.0",
                    "zipCode^1.0",
                    "city^1.0",
                    "emailAddress^1.0",
                    "genderCode^1.0"
                  ],
                  "type": "phrase_prefix",
                  "operator": "OR",
                  "slop": 0,
                  "prefix_length": 0,
                  "max_expansions": 50,
                  "minimum_should_match": "2",
                  "zero_terms_query": "NONE",
                  "auto_generate_synonyms_phrase_query": true,
                  "fuzzy_transpositions": true,
                  "boost": 1.0
                }
              }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "from": 0,
  "size": 500
}
```

---

<div class="post-metadata">

**Author:** ![Imma](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/imma/32/32013_2.png) [@Imma](https://discuss.elastic.co/u/Imma)\
**Post date:** [November 13, 2020, 3:15pm UTC](https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011/5 "2020-11-13T15:15:07Z")

</div>

Gracias por el detalle.

Podrías también añadir el detalle del analyzer, `autocomplete_search`? Veo que el campo `zipCode` lo usa.

Si además puedes dar ejemplos de `zipCode`, genial. ¿Son solo numéricos o alfanuméricos?

En la query ejemplo buscas `"female"`, lo que falla es que si buscas por `"28028"` no te devuelve documentos que tienen ese `zipCode`? O quieres hacer un match por `28` y que te devuelva todos los documentos donde el código postal empieza por `28`?

En general, sería recomendable usar un analizador a medida para analizar un campo de tipo código postal. Aunque no lo puedo asegurar en tu caso. Hay una discusión interesante aquí: [https://stackoverflow.com/questions/51709666/custom-analyzer-use-case-zip-code-elasticsearch](https://stackoverflow.com/questions/51709666/custom-analyzer-use-case-zip-code-elasticsearch)

Dependiendo de cómo sean los códigos postales, y el tipo de búsqueda que quieras que hagan los usuarios (match del inicio del código postal, match exacto del código, match de cualquier trozo del código...), tendrás distintas alternativas tanto en el analizador como para construir la query.

Con un multi\_match en la query tienes diversos tipos, y puede que no te valga el mismo para todos los campos que estás incluyendo:

> **[Multi-match query | Elasticsearch Reference \[7.10\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#multi-match-types)**

---

<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:** [December 11, 2020, 3:15pm UTC](https://discuss.elastic.co/t/no-puedo-filtrar-por-un-campo/255011/6 "2020-12-11T15:15:15Z")

</div>

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