Home > Mobile >  Search inside _id field Elasticsearch
Search inside _id field Elasticsearch

Time:07-27

recently I made a change to the way ids were being generated in my ES index. Previously, we were generating the ids in the code, using a format like: uuid_WEEKDAY_COUNTRY_TIMESTAMP I removed this and instead let the value of this field be auto-generated by ES (as i guess it should be)

How can i write a query that checks none of the old-format ids are still being generated? I tried something like

GET /_search
{
  "query": {
    "query_string": {
      "query": "*WEDNESDAY*",
      "default_field": "_id"
    }
  }
}

But got errors saying i can't query _id field, only text or keyword how can i do this otherwise? thanks

CodePudding user response:

The _id field is special field handled in elastic search as the ID of the document. It is not indexed field like other text fields, though we can set the value , for documents where we do not specify this field it is actually "generated" based on the UID of the document (see: https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-id-field.html 2.8k).

The drop side of this is that , this field only supports a limited subset of the query functionality. One way to get over this is to add a field called id_field (as a text / keyword) into the document itself and then term queries on this field

  • Related