gpt4 book ai didi

elasticsearch - 解决 Elasticsearch 中奇怪的数据检索问题的好的方法是什么?

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

Elasticsearch 服务器出现了一个奇怪的问题。

Elasticsearch 版本为1.6。 “记录”是类型的名称。搜索的网址是http://some.domain:9200/user/records/_search。 “un”的字段映射是字符串。

根据{someId}的值,以下已经使用多年的查询有时会失败,新的ID会失败,而旧的ID会起作用。数据在那里,只是找不到...

{
"from": 0,
"size": 1,
"sort": {
"un": "desc",
"_score": "desc"
},
"query": {
"query_string": {
"query": "un:\"{someId}\"",
"fields": [
"id",
"un",
"e",
"fn",
"ln",
"bn",
"jt",
"sy",
"c",
"st",
"p",
"fbid",
"lnid"
]
}
}
}

做完一些诊断后,我发现无论{someId}是旧的还是新的,以下查询始终有效...
{
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "records.un",
"query": "{someId}"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}

这是一个与第二个查询匹配但第一个查询失败的示例文档。
{
"un": "xxxxxxx.xxxxxxx",
"e": "xxxxxxx",
"pswd": "xxxxxxx",
"fn": "xxxxxxx",
"ln": "xxxxxxx",
"bn": "xxxxxxx",
"jt": "",
"sy": "xxxxxxx",
"urole": "User",
"id": "xxxxxxx",
"status": "1",
"lld": "201704280016",
"cd": "201702100132",
"md": "201704280549",
"cc": "0",
"p": "",
"logo": "",
"mlogo": "",
"ad": "201702100132",
"com": "xxxxxxx",
"rr": "true",
"sid": "00000000-0000-0000-0000-000000000000",
"fbidp": "",
"lnidp": "",
"role": "Lots of data is in this one",
"dim": "",
"drm": "",
"drcm": "xxxxxxx",
"drcfbm": "xxxxxxx",
"drclnm": "xxxxxxx",
"as": "false",
"apr": "true",
"iuid": "xxxxxxx",
"vcount": "9",
"pplatform": "",
"pname": "",
"pid": "00000000-0000-0000-0000-000000000000",
"preciept": "",
"ms": "Free"
}

我认为重新索引服务器可能会解决此问题。解决 Elasticsearch 中奇怪的数据检索问题的好的方法是什么?

最佳答案

您的第一个("query": "un:\"{someId}\"")查询和第二个("query": "{someId}")查询之间存在显着差异。在以前的查询中,由于您将someId用引号引起来,因此它将搜索exact phrase,即,如果您有xxx.yyy,则它将查找包括dot(.)的整个id,因此仅在id不包含点的情况下,id才匹配在后面的查询中,您的someId将为analyzed,即xxx.yyy将被标记为两个字符串(xxxyyy),如果您有点号,则将其匹配。

您需要更改un字段的映射。如果您不对un进行任何全文本搜索查询,那么建议您将其设置为not_analyzed。否则,您需要使用其他分析器,例如whitespace而不是默认的standard analyzer。我真的建议使用前一种解决方案,因为它(结构化exact字段)比后者更有效。

关于elasticsearch - 解决 Elasticsearch 中奇怪的数据检索问题的好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43673731/

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