以下是弹性搜索查询。我需要在查询中使用范围和缺失。如何更改以下查询
{
"query": {
"bool": {
"must": [
{
"constant_score": {
"filter": {
"missing": {
"field": "url"
}
}
}
}
],
"should": []
}
},
"_source": [
"id",
"com_name",
"website",
"_foundation._rating"
]
}
我需要在上面的查询中添加范围。请帮我将以下部分添加到上述查询
"range": {
"_foundation._rating": {
"gte": 1,
"lte": 4
}
答案 0 :(得分:0)
我怀疑您需要的查询如下,即url
字段必须丢失且_foundation._rating
字段必须介于1和4之间(包括):
{
"query": {
"bool": {
"must": [
{
"missing": {
"field": "url"
}
},
{
"range": {
"_foundation._rating": {
"gte": 1,
"lte": 4
}
}
}
]
}
},
"_source": [
"id",
"com_name",
"url",
"_foundation._rating"
]
}
答案 1 :(得分:0)
根据弹性搜索的版本,如果使用5.x,则必须在must_not子句中使用exists。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html
尝试以下查询:
{
"query": {
"range": {
"bool": {
"must": [
{
"term": {
"_foundation._rating": {
"gte": 1,
"lte": 4
}
}
}
],
"must_not": {
"exists": {
"field": "url"
}
}
}
}
}
}