0

我刚开始使用 es,我想知道如何编写查询来执行诸如“城市 1 中的 3 张床”或“城市 1 中靠近学校 2 的 2 间浴室”之类的搜索。据我了解,我们可以处理 3 张床/ bed/bd/bed room 使用同义词,但我怎么知道“城市 1 中的 3 张病床”意味着我需要在病床字段中搜索 3 并在城市字段中搜索 City1?

这是我的示例数据集。

{
    Address :
         {
            City : "City 1",
            Zip : 21222
         },
    Beds : 3,
    Baths : 2,
    Schools :   
         [
            "School 1",
            "School 2"
         ]

},
{
    Address :
         {
            City : "City 2",
            Zip : 21220
         },
    Beds : 1,
    Baths : 1,
    Schools :   
         [
            "School 3",
            "School 2"
         ]

}

提前致谢!

4

1 回答 1

0

城市 1 的 3 张病床就像 2 个子句之间的 AND 条件。使用 bool 和 must 构造查询。尝试阅读 bool 子句:必须、应该和不得。他们的组合将满足您的需求。

query: {
  bool: {
   must: [{
         term: {
          address.city : {
           value: City1
           }
          },{
           term: {
            beds : {
            value: 3
           }
         }]
     }}
于 2015-10-08T05:24:01.853 回答