当前位置: 首页 > 面试题库 >

ElasticSearch JS客户端搜索依据

厉熠彤
2023-03-14
问题内容

我刚开始使用ElasticSearch,却遇到了如何搜索的麻烦(我不一定要理解)。

首先,我有两个文件:

{
    "took": 133
    "timed_out": false
    "_shards": {
        "total": 5
        "successful": 5
        "failed": 0
    }
    "hits": {
        "total": 2
        "max_score": 1
        "hits": [2]
            0:  {
                "_index": "app"
                "_type": "player"
                "_id": "AVcLCOgAi_gt2Fih02MK"
                "_score": 1
                "_source": {
                    "nickName": "sarasa"
                    "birthDate": "1994-11-05T13:15:30.000Z"
                    "state": "sarasa"
                    "adminState": "sarasa"
                    "id": ""
                    "account": {
                        "type": "yojuego"
                        "id": "asasdfa"
                        "password": "asd fasd"
                    }
                }
            }
            1:  {
                "_index": "app"
                "_type": "player"
                "_id": "AVcQ7JNVi_gt2Fih02MN"
                "_score": 1
                "_source": {
                    "nickName": "facundo"
                    "birthDate": "1994-11-05T13:15:30.000Z"
                    "state": "verdura"
                    "adminState": "sudo"
                    "id": ""
                    "account": {
                        "type": "yojuego"
                        "id": "facundo@facundo"
                        "password": "pepe"
                    }
                }
            }
        }
    }
}

我想获取account.id =“ facundo @ facundo”和account.type =“ yojuego”的位置。我正在这样做:

  client.search({
    index: 'app',
    type: 'player',

    query: {
      bool: {
        must: [
          { term: { "account.id": 'facundo@facundo' } },
          { term: { "account.type": 'yojuego' } }
        ],
      }
    }

  }, (error, response, status) => {
    if (error) {
      res.json(400, err);
    }
    else {
      res.json(200, response.hits.hits);
    }
  });

该搜索将我拥有的所有文档检索到索引中。有什么帮助吗?

谢谢!

PD:这是我创建索引和映射的方式:

  client.indices.create({ index: 'yojuego' }, (err, resp, respcode) => {
    if (!err) {
      client.indices.putMapping({
        index: 'app',
        type: "player",
        body: {
          properties: {
            nickName: { type: "string" },
            birthDate: { type: "string" },
            state: { type: "string" },
            adminState: { type: "string" },
            account: {
              type: "nested",
              properties: {
                id: { type: "string" },
                type: { type: "string" },
                password: { type: "string" }
              }
            }
          }
        }
      }, (err, resp, respcode) => {
        res.json(200, resp);
      });
    }
  });

问题答案:

确保该帐户是一个嵌套字段,然后应用此查询,

    {
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "account",
            "query": {
              "bool": {
                "must": [
                  {
                    "match": {
                      "account.id": "facundo@facundo"
                    }
                  },
                  {
                    "match": {
                      "account.type": "yojuego"
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}


 类似资料:
  • 问题内容: 我开始四处寻找搜索引擎,经过一番阅读后,我决定使用ElasticSearch(这是非常了不起的:)),我的项目在C#中,所以我四处寻找客户端并开始使用NEST,一切都很简单,但是我搜索部分有些混乱。 我想搜索 特定类型的 所有字段 ,然后 输入 以下代码: 我看到许多字符串查询搜索已被弃用,并想确保上面的方法是正确的方式(上面未标记为已弃用…)对于一个简单的任务来说也有点长,所以也许有

  • 出于某种奇怪的原因,maven找不到以下导入。我不确定它是否已从我从maven获得的依赖项中删除。我能看看为什么找不到它吗 我使用的是弹性版本

  • 问题内容: 我有一个基本的Elasticsearch查询,看起来像这样 我得到了结果,从合理的角度来看,这没有问题。 所以我尝试在elasticsearch.net中做到这一点 而且我没有任何结果。如果我只有一个带有新{}的搜索正文,那么我会获得点击率,但不会被过滤。 我究竟做错了什么? 问题答案: 如果直接使用低级客户端(elasticsearch.net),它将不会进行任何规范化处理并逐字序列

  • 我们正在spring boot开发一个弹性搜索应用程序。我们不能使用弹性搜索提供的Java API或Java Rest客户端API。相反,我们需要使用spring的rest模板在弹性中进行操作,但是弹性似乎不接受来自rest客户端的索引请求,我们得到了“不接受”的回复。如果有人给我们一些提示或信息,我真的很感激。 弹性版:5.6

  • 1.自我介绍 2.你说你熟悉Java,Java和c++区别? 3.你刚刚说Java没有指针,指针是什么?通过Java引用能够直接操作内存吗? 4.什么是多态?JVM层面是如何实现多态的? 5.用过哪些Java容器,是怎么扩容的?用过ArrayList吗?底层结构是什么样的?Object数组存进去的都是Object对象,为什么取出来的时候是特定类型的对象? 6.Java如何进行垃圾回收?那有没有一种

  • 我可以搜索正常的查询。包含来自elasticsearch uri search的字段值或排序,但无法运行uri search的术语聚合查询。 我怎么能做到这一点? 术语聚合查询是: curl-u-elastic-XGET'127.0.0.1:9200/indexname/typename/\u搜索?pretty'-d'{“size”:0,aggs:{“groupu by_field”:{“term