我对Elasticsearch中的查询字符串查询有一个问题。我在这里写了一个感觉代码来复制它。
POST myindex
POST myindex/mytype
{
"name":"t-shirt",
"season": "2016-3"
}我搜索:
POST myindex/_search
{
"query": {
"query_string": {
"query": "2016-*",
"fields": ["name", "season"]
}
}
}或者:
POST myindex/_search
{
"query": {
"query_string": {
"query": "t-shirt*"
}
}
}这些查询不返回任何文档(但它应该返回索引文档),我不知道如何修复它。
我希望尽可能的泛化,因为这是一个例子,但是我的文档中有很多字段,用户可以在语法上不受限制地搜索他想要的内容。
发布于 2016-03-23 14:17:41
我使用了"analyze_wildcard": true (默认值为false),解决了在同一个查询中搜索with和*时返回的零文档的问题。
注意:"fields": ["_all"] (或不指定)和指定所有字段(例如,"fields": ["name", "season"])之间存在不同的行为。在我最完整的测试中我试过了。
发布于 2016-03-21 13:05:21
name字段已经由标准分析器进行了分析,并产生了两个令牌,即t和shirt,如下所示
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*,你会得到一些结果
POST myindex/_search
{
"query": {
"query_string": {
"query": "shirt*"
}
}
}发布于 2016-03-22 07:11:32
试试通配符查询
POST myindex/_search
{
"query": {
"wildcard": {
"season": {
"value": "2016-*"
}
}
}
}https://stackoverflow.com/questions/36131696
复制相似问题