部分单词匹配不适用于elasticsearch

时间:2015-05-22 11:42:32

标签: elasticsearch

我刚刚下载了1.5.2版,并创建了一个简单的索引:

curl 127.0.0.1:9200/relman/users/ -d '{ "name": "ooppoopp" }'

但是当我搜索oo时,我得到了空的结果:

curl 127.0.0.1:9200/relman/users/_search?q=oo
{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},
 "hits":{"total":0,"max_score":null,"hits":[]}}

有什么想法吗?它应该使用默认配置

P.S从映射看,分析仪处于活动状态,

{
   "relman" : {
      "mappings" : {
         "users" : {
            "properties" : {
               "name" : {
                  "type" : "string"
               }
            }
         }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

根据 partial matching 文档,您将查询更改为

curl -XGET http://localhost:9200/relman/users/_search?q=oo* //first

此检查查询以oo

开头
curl -XGET http://localhost:9200/relman/users/_search?q=*oo* // second 

此检查查询包含oo

例如,如果插入此

curl -XPOST http://localhost:9200/relman/users/ -d '{ "name": "ppoopp" }'

第一个查询仅返回ooppoopp,第二个查询分别返回ooppoopp, ppoopp

使用 wildcard 作为

的另一种方法
curl -XGET http://localhost:9200/relman/users/_search -d '
{
    "query": {
        "wildcard": {
            "name": {
                "value": "oo*" // "*oo*"
            }
        }
    }
}'