Dies ist meine ursprüngliche Abfrage dsl, und die Gesamtzahl der Treffer war 8.981.Elasticsearch Query + Filter
GET /{index}/{document}/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"query": "blue shoes",
"boost": 2
}
}
},
{
"match": {
"description": {
"query": "blue shoes",
"operator": "and",
"boost": 1
}
}
}
]
}
}
}
Ich möchte einen Filter zu dieser Abfrage hinzufügen.
GET /{index}/{document}/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"query": "blue shoes",
"boost": 2
}
}
},
{
"match": {
"description": {
"query": "blue shoes",
"operator": "and",
"boost": 1
}
}
}
],
"filter": {
"terms": {
"store.id": [ "store_a.com", "store_b.com" ]
}
}
}
}
}
Jetzt seine Gesamt-Treffer ist 15.989 (increased
). Und ich sortiere das Ergebnis nach Ergebnis in asc (ich weiß nicht, warum es asc nicht desc ist), gibt es Dokumente, die 0 bewertet wird.
Ich denke, es gibt keine Filterung durch Abfrage, weil es bereits gefiltert ist.
Kann ich 0 gewertete Dokumente aus dem Ergebnis entfernen?
Aus Neugier, hat meine Antwort helfen oder habe ich etwas vermisst? – nikoshr
@nikoshr Entschuldigung für meine späte Antwort. Ich löste dieses Problem, indem ich einfach einen der Übereinstimmungen (in diesem Fall 'Titel') von 'sollte' zu 'muss' verschieben. – mayTree