elasticsearch 弹性搜索通配符查询按文本查询不工作,elasticsearch,elasticsearch" /> elasticsearch 弹性搜索通配符查询按文本查询不工作,elasticsearch,elasticsearch" />

elasticsearch 弹性搜索通配符查询按文本查询不工作

elasticsearch 弹性搜索通配符查询按文本查询不工作,elasticsearch,elasticsearch,我有一个查询,其中在筛选器上使用通配符返回结果,但使用结果中的实际文本执行查询返回0个命中 这很有效 { "query": { "filtered": { "query": { "match_all": { } }, "filter": { "nested": { "path": "houses", "query": { "filtered": { "query": { "match_all": { } },

我有一个查询,其中在筛选器上使用通配符返回结果,但使用结果中的实际文本执行查询返回0个命中

这很有效

{
"query": {
"filtered": {
   "query": { "match_all": { } },

  "filter": {
    "nested": {
      "path": "houses",
      "query": {
        "filtered": {
          "query": { "match_all": { } },

          "filter": {
            "wildcard": {
               "houses.name": "????"
            }
          }

        }
      }
    }
  }
  }
}
}
如果它返回一个名为“夏娃花园”的房子,则不会返回任何东西

    {
"query": {
"filtered": {
   "query": { "match_all": { } },

  "filter": {
    "nested": {
      "path": "houses",
      "query": {
        "filtered": {
          "query": { "match_all": { } },

          "filter": {
            "wildcard": {
               "houses.name": "Eve gardens"
            }
          }

        }
      }
    }
  }
  }
}
}
请帮忙

见:

根据您的查询,
houses.name
似乎是一个
分析的
字符串,这意味着
Eve gardens
将被标记并存储为
Eve
gardens
而不是整个
Eve gardens
。根据文件

通配符查询根据术语进行操作。如果使用它们来查询已分析的字段,它们将检查字段中的每个术语,而不是整个字段

所以如果你这样做了

"wildcard": {"houses.name": "Eve gardens"}
这是行不通的

试一试

它应该会给你带来结果。希望这有帮助。

请参阅:

根据您的查询,
houses.name
似乎是一个
分析的
字符串,这意味着
Eve gardens
将被标记并存储为
Eve
gardens
而不是整个
Eve gardens
。根据文件

通配符查询根据术语进行操作。如果使用它们来查询已分析的字段,它们将检查字段中的每个术语,而不是整个字段

所以如果你这样做了

"wildcard": {"houses.name": "Eve gardens"}
这是行不通的

试一试


它应该会给你带来结果。希望这有帮助。

很抱歉耽搁了。非常感谢。抱歉耽搁了。非常感谢。