gpt4 book ai didi

elasticsearch - 使用术语查询的多匹配查询搜索多个索引elasticsearch 6.x

转载 作者:行者123 更新时间:2023-12-03 01:34:01 25 4
gpt4 key购买 nike

所有,
我正在构建一个NEST 6.x查询,该查询采用一个搜索词,并在不同索引的不同字段中查找。
这是我到目前为止获得的结果,但未返回我期望的任何结果。

请查看下面的详细信息

使用的索引

  • dev-sample-search
  • 用户代理搜索

  • 搜索的工作方式如下。
  • 将针对查询字段( 27921093 )中的值进行搜索。
    字段 agentNumber,customerName,fileNumber,documentid (这些都是
    分析的文件)。
  • 搜索应将文档限制为用户的 agentNumbers
    sampleuser@gmail.com 有权访问(
    在下面添加了user-agents-search)。
  • 代理编号,customerName,fileNumber,documentid 和状态为
    索引dev-sample-search的一部分。
  • 状态字段定义为关键字
  • 用户代理搜索索引中的字段都是关键字

    样本用户代理搜索索引数据:
     {
    "id": "sampleuser@gmail.com"",
    "user": "sampleuser@gmail.com"",
    "agentNumber": [
    "123.456.789",
    "1011.12.13.14"
    ]
    }

  • 样本dev-sample-搜索索引数据:
    {

    "agentNumber": "123.456.789",
    "customerName": "Bank of america",
    "fileNumber":"test_file_1123",
    "documentid":"1234456789"
    }

    GET dev-sample-search/_search
    {
    "from": 0,
    "size": 10,
    "query": {
    "bool": {
    "must": [
    {
    "multi_match": {
    "type": "best_fields",
    "query": "27921093",
    "operator": "and",
    "fields": [
    "agentNumber",
    "customerName",
    "fileNumber",
    "documentid^10"
    ]
    }
    }
    ],
    "filter": [
    {
    "bool": {
    "must": [
    {
    "terms": {
    "agentNumber": {
    "index": "user-agents-search",
    "type": "_doc",
    "user": "sampleuser@gmail.com",
    "path": "agentNumber"
    }
    }
    },
    {
    "bool": {
    "must_not": [
    {
    "terms": {
    "status": {
    "value": "pending"
    }
    }
    },
    {
    "term": {
    "status": {
    "value": "cancelled"
    }
    }
    },
    {
    "term": {
    "status": {
    "value": "app cancelled"
    }
    }
    }
    ],
    "should": [
    {
    "term": {
    "status": {
    "value": "active"
    }
    }
    },
    {
    "term": {
    "status": {
    "value": "terminated"
    }
    }
    }
    ]
    }
    }
    ]
    }
    }
    ]
    }
    }
    }

    最佳答案

    我看到了一些您可能要看的东西:

  • terms查找查询中,"user": "sampleuser@gmail.com",应该是"id": "sampleuser@gmail.com",
  • 如果should子句中至少有一个filter子句匹配,请在包含"minimum_should_match" : 1子句
  • bool查询上设置 should

    关于elasticsearch - 使用术语查询的多匹配查询搜索多个索引elasticsearch 6.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53876708/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com