当前位置: 首页 > 知识库问答 >
问题:

弹性查询返回不正确的结果

史修谨
2023-03-14

以下是我的疑问....

{
  "size": 100,
  "query": {
    "bool": {
      "filter": {
        "bool": {
          "should": [
            {
              "terms": {
                "dkncourseintakes": [
                  "Trimester 3"
                ]
              }
            },
            {
              "range": {
                "dkncourseatarcloud": {
                  "lte": "100"
                }
              }
            },
            {
              "range": {
                "dkncourseatarwaurnponds": {
                  "lte": "100"
                }
              }
            },
            {
              "range": {
                "dkncourseatarwarrnambool": {
                  "lte": "100"
                }
              }
            },
            {
              "range": {
                "dkncourseatarburwood": {
                  "lte": "100"
                }
              }
            },
            {
              "range": {
                "dkncourseatarwaterfront": {
                  "lte": "100"
                }
              }
            }
          ],
          "must": [
            {
              "terms": {
                "dkncoursequal": [
                  "under_bachelor_degree"
                ]
              }
            }
          ]
        }
      },
      "must": [
        {
          "match": {
            "dkncoursestudent": "Domestic"
          }
        },
        {
          "terms": {
            "dknpagetagia": [
              "ia-Business"
            ]
          }
        },
        {
          "terms": {
            "dkncourselocations": [
              "Burwood"
            ]
          }
        }
      ]
    }
  }
}
{
        "_index": "all_courses",
        "_type": "courses",
        "_id": "03c154fe7ee8029472533222340369d43d4fbff5",
        "_score": 2.030092,
        "_source": {
          "dkncoursetype": "Undergraduate",
          "dkncoursequal": "under_bachelor_degree",
          "dkncourselocations": "Burwood",
          "dkncourseatarwarrnambool": 0,
          "dknpagetagia": "ia-Business,ia-English_and_International_Languages",
          "dkncourseatarburwood": 65,
          "dknpagetagfands": "Faculty_of_Arts_and_Education",
          "dkncourseatarwaterfront": 0,
          "dkncoursestudent": "Domestic",
          "dkncourseintakes": "Trimester 1" <=== THIS IS THE PROBLEM
        }
"bool": {
              "should": [
                {
                  "terms": {
                    "dkncourseintakes": [
                      "Trimester 3"
                    ]
                  }
 "bool": {
          "must": [
            {
              "terms": {
                "dkncourseintakes": [
                  "Trimester 3"
                ]
              }
            }

我没有结果。

另外,我正在使用这个插件来生成请求正文。

我的查询如下所示..

 var body = bodybuilder()
                    //.filter('terms', 'dkncourseintakes', intake_checkbox_value)
                    .query('match', 'dkncoursestudent', student_radio_value)
                    .query('terms', 'dknpagetagia', interest_checkbox_value)
                    .query('terms', 'dkncourselocations', location_checkbox_value)
                    .filter('terms', 'dkncourseintakes', intake_checkbox_value)

                    .orFilter('range', 'dkncourseatarcloud', {lte: atar_radio_value})
                    .orFilter('range', 'dkncourseatarwaurnponds', {lte: atar_radio_value})
                    .orFilter('range', 'dkncourseatarwarrnambool', {lte: atar_radio_value})
                    .orFilter('range', 'dkncourseatarburwood', {lte: atar_radio_value})
                    .orFilter('range', 'dkncourseatarwaterfront', {lte: atar_radio_value})

                .filter('terms', 'dkncoursequal', qual_checkbox_value)
                    .size(100)
                    .build()
{
        "settings": {

            "number_of_shards": "1",
            "number_of_replicas": "0",
            "analysis": {
                "analyzer": {
                    "semi_colon_analyzer": {
                        "type": "pattern",
                        "pattern": ";",
                        "lowercase": false
                    },
                    "comma_analyzer": {
                        "type": "pattern",
                        "pattern": ",",
                        "lowercase": false
                    }
                }

            }
        },
        "mappings": {
            "test": {
                "properties": {     
                "dkncoursestudent": {
                        "type": "text"
                    },
                    "dknpagetagia": {
                        "type": "text",
                        "analyzer": "comma_analyzer",
                        "search_analyzer": "comma_analyzer"
                    },      
                    "dkncoursequal": {
                        "type": "text"
                    },
                    "dkncourseatar": {
                        "type": "integer"
                    },  
                    "dkncourseintakes": {
                        "type": "text",
                        "analyzer": "semi_colon_analyzer",
                        "search_analyzer": "semi_colon_analyzer"
                    },
                    "dkncourselocations": {
                        "type": "text",
                        "analyzer": "semi_colon_analyzer",
                        "search_analyzer": "semi_colon_analyzer"
                    }
                }
            }
        }
    }
    null

感谢您到目前为止的阅读,如果有人能帮助我找出如何使这一工作,我将非常感谢。

共有1个答案

韩乐湛
2023-03-14

别管男人了。看起来映射不正确....就像这样...

"semi_colon_analyzer": {
                        "type": "pattern",
                        "pattern": ";", <=== This was the problem
                        "lowercase": false
                    }

将其更改为“pattern”:“;”(只是在分号后面添加了空格,现在一切正常)

 类似资料:
  • 在我的弹性搜索数据库中插入6条记录后,我正在尝试一个弹性搜索示例。

  • 创建新的。NET Framework 4.6.1控制台应用程序 为NEST 6.5.0和ElasticSearch.NET 6.5.0添加NuGet包 然后,我创建了一个新的弹性索引,其中包含具有“tags”属性的对象(类型为“mything”)。此标记是一组可能值中的随机逗号分隔的单词集。在测试中,我在索引中插入了100到5000项。我试了越来越少的可能的词在设置。

  • 我正在使用postgis计算两个地理坐标之间的距离。 它返回给我53536.743496517米,大约等于54公里,但实际距离是103公里,我通过http://boulter.com/gps/distance/ 我在询问中是否做错了什么?

  • 我正在尝试在代码中使用NSPredicate搜索名称。搜索工作正常,但不会返回适当的结果。当我搜索一个名称(例如“Colin”)时,它会返回表中的所有其他名称或另一个名称(例如“Mike”),但如果我输入一个不存在的随机字符串,它会返回:“找不到结果”。当我在搜索栏中键入一个名字(例如Lisa)时,我希望它能找到这个名字(Lisa)并返回它,但它没有这样做 这是我的代码: 自己name返回表中的所

  • 我创建了一个表,其中包含位置及其空间坐标(纬度、经度(度数)),以postgres表示。我用于相同用途的命令有: 我在postgres中插入了空间坐标(经度、纬度) 我创建了一个表,其中包含位置及其空间坐标(纬度、经度(度数)),以postgres表示。我用于相同用途的命令有: testSpatial。csv包含以下值: 现在,我想找到彼此距离在50公里以内的所有空间位置。为此,我使用了以下命令:

  • 我有这样的疑问: 请注意,但不知为什么结果是... 我错过了什么?