gpt4 book ai didi

elasticsearch - elasticsearch TERM查询未返回包含确切术语的文档

转载 作者:行者123 更新时间:2023-12-03 00:59:49 24 4
gpt4 key购买 nike

我的文档中的状态为“确定”。

以下匹配查询向我返回了此文档:

POST /bank/_search
{
"query": {
"bool" : {
"must" : {
"match" : { "state" : "OK" }
}
}}}

以下术语查询不会返回状态为“OK”的文档:
POST /bank/_search
{
"query": {
"bool" : {
"must" : {
"term" : { "state" : "OK" }
}
}}}

按照定义“术语查询查找包含倒排索引中指定的确切术语的文档。”我仍然感到困惑,为什么术语查询不返回所需的文档。

我通过执行以下命令通过感知导入了数据:
curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"
curl 'localhost:9200/_cat/indices?v'

如果有人还可以共享一些有关倒排/非倒置,分析/未分析以及术语/匹配的信息,那将是很好的。我读到这些,但我仍然感到困惑。

最佳答案

匹配查询始终在对搜索文本进行匹配之前对其进行分析,但是术语查询会查找完全匹配的内容。手段

当您插入文本“OK”时,默认情况下,ES会进行分析(标准分析器),并将文本存储为“ok”(小写)在反向索引中。

因此,当您使用匹配查询进行搜索时

POST /bank/_search
{
"query": {
"bool" : {
"must" : {
"match" : { "state" : "OK" }
}
}}}

“确定”文本转换为“确定”(根据状态分析器)并执行匹配。

对于术语查询,您必须手动将文本更改为小写,因为它不会对搜索时间进行分析。
POST /bank/_search
{
"query": {
"bool" : {
"must" : {
"term" : { "state" : "ok" } //lowercased
}
}}}

如果您始终寻找“确定”,则可以在状态属性上添加“未分析”。
这意味着在存储时,状态属性将不会按原样进行分析和存储,那么您的条件和匹配查询将看起来是准确的单词。

敬请期待,
How to not-analyze in ElasticSearch?

关于elasticsearch - elasticsearch TERM查询未返回包含确切术语的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39560460/

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