Quiero lograr algo como esto SELECT * FROM myindex where _id not in (1, 2, 3) en Elasticsearch. Una forma de hacer esto es:

{
    "from": 0,
    "size": 200,
    "query": {
        "bool": {
            "must": {
                "bool": {
                    "must_not": {
                        "bool": {
                            "should": [
                                {
                                    "match": {
                                        "_id": {
                                            "query": 1,
                                            "type": "phrase"
                                        }
                                    }
                                },
                                {
                                    "match": {
                                        "_id": {
                                            "query": 2,
                                            "type": "phrase"
                                        }
                                    }
                                },
                                {
                                    "match": {
                                        "_id": {
                                            "query": 3,
                                            "type": "phrase"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        }
    }
}

Pero este enfoque no se escalaría para una gran variedad porque esta será una gran consulta. ¿Hay una mejor manera de hacer esto?

13
Amit Tripathi 7 mar. 2017 a las 13:58

2 respuestas

La mejor respuesta

¿Tal vez algo como esto?

GET _search
{
  "query" : {
    "bool" : {
      "must_not" : {
        "terms" : {
          "_id" : [1,2,3]
        }
      }
    }
  }
}
17
barat 7 mar. 2017 a las 11:06

Puedes hacer esto muy simple con:

query: {
        bool: {
          must_not: {
            terms: {
              _id: array
            }
          }
        }
      }
3
paqash 7 mar. 2017 a las 11:07