gpt4 book ai didi

elasticsearch - Elasticsearch 查询未返回结果

转载 作者:行者123 更新时间:2023-12-02 23:06:49 25 4
gpt4 key购买 nike

我有一个不返回数据的 flex 搜索查询。这是该查询的2个示例-第一个可以工作并返回一些记录,但是第二个不返回任何记录-我缺少什么?
示例1的工作原理:

curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"data.case.field1": "ABC123"
}
}
}
'
示例2无法正常工作:
curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"must": {
"term" : { "data.case.field1" : "ABC123" }
}
}
}
}
'

最佳答案

这是由于matchterm查询之间的差异而发生的,对match查询进行了分析,这意味着它在搜索项上应用了相同的分析器,该分析器在索引时间用于字段,而未分析和使用term查询进行精确搜索,并且字词查询中的search term不会通过analysis process传递。
term query的官方文档

Returns documents that contain an exact term in a provided field.


match query的官方文档

Returns documents that match a provided text, number, date or booleanvalue. The provided text is analyzed before matching.


如果您在不使用任何显式分析器的情况下使用 data.case.field1文本字段,则将应用文本字段的默认分析器(标准),这将小写文本并存储结果标记。
对于您的文本,标准分析器将生成以下 token ,请参阅 Analyze API以获取更多详细信息。
{
"text" : "ABC123",
"analyzer" : "standard"
}
并生成 token
{
"tokens": [
{
"token": "abc123",
"start_offset": 0,
"end_offset": 6,
"type": "<ALPHANUM>",
"position": 0
}
]
}
现在,当您使用term查询作为搜索词时,将不会对其进行分析和使用,因为它是大写char(ABC123),它与索引中的标记不匹配,因此不会返回结果。
附言:请参阅我的 this SO answer,以获取有关字词和匹配查询的更多详细信息。

关于elasticsearch - Elasticsearch 查询未返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64559790/

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