Elasticsearch匹配具有多个值的属性(数组)

时间:2014-03-06 16:17:04

标签: elasticsearch

我有一个这样的索引

 {
            "_index": "entities",
            "_type": "names",
            "_id": "0000230799",
            "_score": 1,
            "_source": {
               "FIRST_NAME": [
                  "Deborah",
                  "Debbie"
               ],
               "LAST_NAME": "Jones"
            }
         }

我尝试对名称进行匹配查询,但除非第一个名称是准确的,否则没有命中返回

我希望下面的查询能够生成至少一个命中并对其进行评分,我错了吗?

curl -XPOST 'http://localhost:9200/entities/names/_search?pretty=true' -d '

{
 "query": { 

            "match":{
                "FIRST_NAME":"Deb"
                }
        }

}'

我的映射是

    {
   "entities": {
      "mappings": {
         "names": {
            "_parent": {
               "type": "entity"
            },
            "_routing": {
               "required": true
            },
            "properties": {
               "FIRST_NAME": {
                  "type": "string"
               },
               "LAST_NAME": {
                  "type": "string"
               }
            }
         }
      }
   }
}

1 个答案:

答案 0 :(得分:3)

此处的问题与多个值无关,但您假设match - 查询将匹配以您的输入开头的任何内容。它没有。

在匹配系列查询中,match_phrase_prefix可能值得一试。这里将对此进行更详细的解释:http://www.elasticsearch.org/blog/starts-with-phrase-matching/

还有prefix - 查询,但请注意,它不会进行任何文本分析。

有关文本分析的一般介绍,我可以推荐这两篇文章: