我很难找到准确的匹配。文档中的两个字段、_id中的字段和正文中的一个字段中的字段是相同的。
所以我可以搜索这两个领域中的任何一个。是否有任何方法来配置术语查询来支持这一点?我尝试过指定空格分析器,但它似乎不支持术语查询的配置。
我试过几种变体,但到目前为止都没有用。
data: {
query: {
term: {
"_id":"4123-0000"
}
}
}这什么也回不来。
发布于 2020-09-12 04:34:35
问题是,在使用默认映射时,您的_id字段似乎是由您填充的,它将使用text字段,该字段使用standard分析器并根据-拆分令牌,因此您的_id字段被标记如下:
POST /_analyze
{
"text" : "4123-0000",
"analyzer" : "standard"
}和令牌
{
"tokens": [
{
"token": "4123",
"start_offset": 0,
"end_offset": 4,
"type": "<NUM>",
"position": 0
},
{
"token": "0000",
"start_offset": 5,
"end_offset": 9,
"type": "<NUM>",
"position": 1
}
]
}现在,正如您可能知道的那样,term查询没有被分析(即它按原样使用4123-0000 ),并试图在倒排索引中查找,这是不可用的,因此您无法得到任何结果。
解决方案,只需将_id替换为_id.keyword即可获得搜索结果。
https://stackoverflow.com/questions/63856672
复制相似问题