官术网_书友最值得收藏!

  • Elasticsearch Blueprints
  • Vineeth Mohan
  • 302字
  • 2021-07-16 13:39:33

Searching with multiple conditions

Often, we find ourselves in a position where we need to search with more than one criterion, where each of these criteria could be expressed as an inpidual query. In this section, let's see how we can make such a combination of search.

One simple way to express multiple search criteria is using a bool query. The bool query lets you use a combination of other queries, where each of the conditions can be put using a Boolean clause. There are three Boolean clauses:

  • must
  • should
  • must_not

The must clause suggests that the constituent query must appear in the matching documents. If there is no must clause in the query, a combination of should clauses can be given. Also, you may set the minimum number of should clauses that should be matched. As the name indicates, must_not means that this clause should not match the document.

Let's see how we can use the bool query in Elasticsearch:

{
    "bool" : {
        "must" : [{
            "term" : { "productType" : "Laptop " }
        }],
        "must_not" : {
            "range" : {
                "dateOfManufactoring" : { "from" : 1990/01/01, "to" : 2014/01/01 }
            }
        },
        "should" : [
            {
                "term" : { "color" : "yellow" }
            },
            {
                "term" : { "description" : "lenovo" }
            }
        ],
        "minimum_should_match" : 1,
        "boost" : 1.0
    }
}   

Here, we used a bool query to select all the laptops whose date of manufacturing is not between 1999 to 2014. Then, we boosted the laptops that were of the color yellow or were from lenovo.

Note

If there is at least one must query, then none of the should queries need to match a document to qualify that document as a result. In this case, the should query match will increase the relevance of that document.

主站蜘蛛池模板: 余干县| 漳平市| 乌拉特前旗| 张家港市| 绿春县| 和林格尔县| 尉氏县| 钟山县| 同德县| 夏河县| 改则县| 六盘水市| 武山县| 左云县| 峡江县| 秭归县| 辰溪县| 寻乌县| 慈溪市| 呼和浩特市| 克山县| 淄博市| 奉贤区| 承德市| 两当县| 南澳县| 汤原县| 庆城县| 仙桃市| 寿阳县| 城固县| 河源市| 镇宁| 麻江县| 峡江县| 玉树县| 瑞安市| 宝坻区| 东阳市| 通海县| 阜平县|