os-query-builder-rs 0.1.6

Open Search query builder
Documentation

os-query-builder-rs

Version License

Библиотека для формирования запросов для Open Search.

Установка

[dependencies]
os-query-builder-rs = "0.1.6"

Примеры использования

MultiMatch

let multi_match = MultiMatch::new()
            .fields(vec!["brands", "articles"])
            .value("oc47")
            .operator(Operator::And)
            .query_type(Type::BestFields)
            .boost(2)
            .minimum_should_match("90%");

let query = Query::new()
            .source(vec!["test"])
            .query(multi_match);

Сформирует следующий запрос

{
  "_source": [
    "test"
  ],
  "query": {
    "multi_match": {
      "boost": 2,
      "fields": [
        "brands",
        "articles"
      ],
      "minimum_should_match": 2,
      "operator": "and",
      "query": "oc47",
      "type": "best_fields"
    }
  }
}

Terms

Terms query
 let terms = Terms::new_with_terms_query("product_id", vec!["128660147","127875288",]).boost(0.7);

let query = Query::new().query(terms)
    .source(vec!["product_id", "brand", "article", "name",]);

Сформирует следующий запрос:

{
  "_source": [
    "product_id",
    "brand",
    "article",
    "name"
  ],
  "query": {
    "terms": {
      "boost": 0.7,
      "product_id": [
        "128660147",
        "127875288"
      ]
    }
  }
}
Terms lookup
let terms_lookup = TermsLookup::new("sku", "131356111", "brand_id")
            .routing("brand_id");

let terms = Terms::new_with_terms_lookup("brand_id", terms_lookup)
            .boost(0.7);

let query = Query::new().query(terms);

Сформирует следующий запрос:

{
  "query": {
    "terms": {
      "boost": 0.7,
      "brand_id": {
        "id": "131356111",
        "index": "sku",
        "path": "brand_id",
        "routing": "brand_id"
      }
    }
  }
}

Планы развития