149 votes

Aucune correspondance trouvée pour le champ dans l'ordre de tri dans ElasticSearch

Elasticsearch génère un SearchParseException lors de l'analyse de la requête, si certains documents trouvés ne contiennent pas le champ utilisé dans les critères de tri.

SearchParseException : Parse Failure [Aucune correspondance trouvée pour [price] dans l'ordre de tri].

Comment puis-je effectuer une recherche fructueuse dans ces documents, même si certains d'entre eux sont dépourvus de l'adresse IP. price champ ?

2voto

James Boutcher Points 1048

J'ai rencontré le même problème (en quelque sorte ; j'obtiendrais certaines erreurs, mais certains résultats), mais dans mon cas, ma recherche était émise à la racine (aucun index spécifié), et les erreurs que j'obtenais étaient dues au fait que la recherche/ordre recherchait également un index Kibana.

Erreur stupide, mais ça aidera peut-être quelqu'un d'autre qui se retrouve ici.

2voto

Brian Sanchez Points 41

Elasticsearch 6.4

il suffit de spécifier l'index et c'est tout dans Kibana

AVANT

GET /_search
{

  "query": {
    "exists": {
      "field": "document_id"
    }
  },
  "sort": [
    {
      "document_id": { "order": "asc"  },
      "created_at":  { "order": "desc" }
    }
  ]
}

APRÈS

GET /document-index/contact/_search  (here)
{

  "query": {
    "exists": {
      "field": "document_id"
    }
  },
  "sort": [
    {
      "document_id": { "order": "asc"  },
      "created_at":  { "order": "desc" }
    }
  ]
}

0voto

Rafal Enden Points 1508

Vous pourriez également utiliser script qui vous donne une certaine flexibilité :

"sort" : {
    "_script" : {
        "type" : "number",
        "script" : {
            "lang": "painless",
            "source": "return !doc['price'].empty ? doc['price'].value : 0"
        },
        "order" : "desc"
    }
}

0voto

Abhishek Raj Points 392

Lorsque nous utilisons le code ci-dessous, où ajoutés est la date, ce qui se passe ! ! le texte des attributs est analysé, ce qui signifie qu'il est décomposé en mots distincts lors de son stockage, et permet d'effectuer des recherches en texte libre sur un ou plusieurs mots du champ.

il y a donc "texte" et "mot-clé" associés aux champs, donc si nous devons utiliser l'agrégation dans la requête, nous avons besoin de la valeur du champ en général le mot-clé.

BEFORE

"_source":{....}
"query" : {...}
"sort": [
{
  "added_on": {
    "order": "desc"
  }
}
]

AFTER
"_source":{....}
"query" : {...}
"sort": [
{
  "added_on.keyword": {
    "order": "desc"
  }
}
]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X