如何创建多个范围的查询?

时间:2019-08-22 21:48:18

标签: reactjs elasticsearch

我在创建多范围查询时遇到问题。

因此,我正在使用一个使用setQuery函数创建查询的库,该函数接受一个对象。 Scroll down to setQuery

现在,我的函数现在创建一个范围查询,并且工作正常。我遵循了ES Docs,因此它与我当前编写的内容相符,即...

    const queryObject = {
      query: {
        range: {
          [searchType]: {
            gte: from,
            lte: to,
            boost: 2.0,
          },
        },
      },
      value: queryItem,
    };

但是我似乎找不到任何形状相似的多个范围的文档。 有关如何处理此问题的任何建议?

谢谢!

1 个答案:

答案 0 :(得分:1)

做到了! 所以说我有一个范围数组

const sampleRanges = [{from: 1990, to: 1992}, {from: 1993, to: 1995}, {from: 1996, to: 2002}]

我创建了一个函数来映射这些值,所以...

const generateRangeQuery = () => {
      return sampleRanges.map(value => ({
        range: {
          [searchType]: {
            gte: value.from,
            lte: value.to,
            boost: 2.0,
          },
        },
      }));
    };

然后,多范围查询应如下所示:

const query = {
  query: {
    bool: {
      should: generateRangeQuery(),
      minimum_should_match: 1,
      boost: 1.0,
    },
  },
};

这对我有用!