首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Elasticsearch中使用-和*查询字符串查询

在Elasticsearch中使用-和*查询字符串查询
EN

Stack Overflow用户
提问于 2016-03-21 12:59:00
回答 3查看 159关注 0票数 0

我对Elasticsearch中的查询字符串查询有一个问题。我在这里写了一个感觉代码来复制它。

代码语言:javascript
复制
POST myindex
POST myindex/mytype
    {
        "name":"t-shirt",
        "season": "2016-3"
    }

我搜索:

代码语言:javascript
复制
POST myindex/_search
{
    "query": {
        "query_string": {
           "query": "2016-*",
           "fields": ["name", "season"]
        }
    }
}

或者:

代码语言:javascript
复制
POST myindex/_search
{
    "query": {
        "query_string": {
           "query": "t-shirt*"
        }
    }
}

这些查询不返回任何文档(但它应该返回索引文档),我不知道如何修复它。

我希望尽可能的泛化,因为这是一个例子,但是我的文档中有很多字段,用户可以在语法上不受限制地搜索他想要的内容。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-23 14:17:41

我使用了"analyze_wildcard": true (默认值为false),解决了在同一个查询中搜索with和*时返回的零文档的问题。

注意:"fields": ["_all"] (或不指定)和指定所有字段(例如,"fields": ["name", "season"])之间存在不同的行为。在我最完整的测试中我试过了。

票数 0
EN

Stack Overflow用户

发布于 2016-03-21 13:05:21

name字段已经由标准分析器进行了分析,并产生了两个令牌,即tshirt,如下所示

代码语言:javascript
复制
curl -XGET localhost:9200/test/_analyze?pretty -d 't-shirt'
{
  "tokens" : [ {
    "token" : "t",
    "start_offset" : 0,
    "end_offset" : 1,
    "type" : "<ALPHANUM>",
    "position" : 0
  }, {
    "token" : "shirt",
    "start_offset" : 2,
    "end_offset" : 7,
    "type" : "<ALPHANUM>",
    "position" : 1
  } ]
}

相反,你可以搜索shirt*,你会得到一些结果

代码语言:javascript
复制
POST myindex/_search
{
    "query": {
        "query_string": {
           "query": "shirt*"
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-03-22 07:11:32

试试通配符查询

代码语言:javascript
复制
POST myindex/_search
{
  "query": {
    "wildcard": {
      "season": {
        "value": "2016-*"
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36131696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档