我想显示前 10 条记录并对弹性搜索中的特定字段应用过滤器

I want to show Top 10 records and apply filter for specific fields in Elastic search

这是获取前 10 条记录的查询。里面有一个字段名称 Answer,我们有一条记录“UNHANDLED”。我想排除 Answer 字段中的 UNHANDLED。

如何编写查询以获取前 10 名并排除未处理的

GET /logstash-sdc-mongo-abcsearch/_search?size=0 

{
  "aggs": {
    "top_tags": {
      "terms": {
        "field": "question.keyword"
      },
      "aggs": {
        "top_faq_hits": {
          "top_hits": {
            "_source": {
              "includes": [
                "answer"
              ]
            },
            "size": 1
          }
        }
      }
    }
  }
}

您可以使用 must_not 子句,排除 answer 字段中包含 UNHANDLED 的文档。试试下面的查询 -

索引映射:

{
  "mappings": {
    "properties": {
      "question": {
        "type": "keyword"
      },
      "answer": {
        "type": "keyword"
      }
    }
  }
}

索引数据:

{
  "question": "a",
  "answer": "b"
}
{
  "question": "c",
  "answer": "UNHANDLED"
}

搜索查询:

{
  "query": {
    "bool": {
      "must_not": {
        "term": {
          "answer": "UNHANDLED"
        }
      }
    }
  },
  "aggs": {
    "top_tags": {
      "terms": {
        "field": "question"
      },
      "aggs": {
        "top_faq_hits": {
          "top_hits": {
            "_source": {
              "includes": [
                "answer"
              ]
            },
            "size": 1
          }
        }
      }
    }
  }
}

搜索结果:

"aggregations": {
    "top_tags": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "a",
          "doc_count": 1,
          "top_faq_hits": {
            "hits": {
              "total": {
                "value": 1,
                "relation": "eq"
              },
              "max_score": 0.0,
              "hits": [
                {
                  "_index": "65563925",
                  "_type": "_doc",
                  "_id": "1",
                  "_score": 0.0,
                  "_source": {
                    "answer": "b"
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }

更新 1:

根据以下评论,尝试以下查询:

{
  "query": {
    "bool": {
      "must_not": {
        "term": {
          "answer": "UNHANDLED"
        }
      },
      "must": {
        "term": {
          "source": "sonax"
        }
      }
    }
  },
  "aggs": {
    "top_tags": {
      "terms": {
        "field": "question"
      },
      "aggs": {
        "top_faq_hits": {
          "top_hits": {
            "_source": {
              "includes": [
                "answer"
              ]
            },
            "size": 1
          }
        }
      }
    }
  }
}