Elasticsearch: Comment utiliser deux différents de multiples champs correspondants?
Je veux faire quelque chose de bien, comme le "et" exemple de filtre, sauf avec les termes "devrait", dans chacun d'eux, au lieu de les types de champ dans l'exemple. Je suis venu avec les éléments suivants:
{
"query": {
"bool": {
"must": [
{
"ids": {
"type": "foo",
"values": [
"fff",
"bar",
"baz",
]
}
}
]
}
},
"filter": {
"and": {
"filters": [
{
"bool": {
"should": {
"term": {
"fruit": [
"orange",
"apple",
"pear",
]
}
},
"minimum_should_match": 1
}
},
{
"bool": {
"should": {
"term": {
"color": [
"red",
"yellow",
"green"
]
}
},
"minimum_should_match": 1
}
}
]
}
}
}
Cependant, j'ai cette erreur:
[bool] filter does not support [minimum_should_match];
Est-il une autre façon d'aller sur ce que je suis tente de faire, ou suis-je sur la bonne voie? Ou est-ce tout simplement pas possible dans elasticsearch?
Comme le message d'erreur dit, bool filtres ne prennent pas en charge minimum_should_match; bool requêtes. Pouvez-vous expliquer ce que vous essayez de le faire en anglais?
OriginalL'auteur beth | 2013-09-24
Vous devez vous connecter pour publier un commentaire.
Chaque bool requête clause peut contenir plusieurs clauses. Un des termes de la requête (http://www.elasticsearch.org/guide/reference/query-dsl/terms-query/) est un moyen facile de préciser que la requête doit correspondre à toute une liste de termes. Voici qui utilise des termes des requêtes à-dire le fruit doit être celle de l'orange, la pomme, la poire et la couleur doit être une de rouge, de jaune, de vert, en plus de l'id de la requête que vous aviez avant:
minimum_should_match
comme ça sans unshould
filtre? Je suppose que vous ne le pouvait pas.OMG cela fonctionne. Cette requête est la plus belle chose que j'ai vu depuis des semaines. Je vais le nom de mon premier-né "stackoverflow".
qu'en phrases, puis-je faire quelque chose de similaire? si je veux faire une requête où tout ce que je veux, c'est voir les docs correspondre au moins à l'une des phrases-je fournir
OriginalL'auteur kielni
Je pense que vous n'avez pas besoin de spécifier bool filtre. Si je comprends ce que vous essayez d'accomplir, conditions de filtre avec et le filtre devrait être suffisant. Donc quelque chose comme ceci:
Vous pouvez même spécifier
execution
àbool
(qui, selon la documentation)Generates a term filter (which is cached) for each term, and wraps those in a bool filter. The bool filter itself is not cached as it can operate very quickly on the cached term filters.
OriginalL'auteur vhyza