Elasticsearch查询:匹配句子数组中的单词

时间:2017-10-16 16:20:00

标签: elasticsearch dsl

我有一个句子数组的字段(字符串)。如果单词在句子中,我想在数组中搜索。

"fields": {
           "title": [
              "The book of the world"
           ]
        }

简单查询"书"不会返回预期的结果:

GET catalog/_search
  {
    "fields" : "title",
    "query":{
       "match" : {
          "title":"book"
       }
     }
}

你有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在将数据添加到索引之前,必须先配置分析器。

分析仪是"分裂"你的句子作为标记(这里:"""书"""""""世界"或者删除停止言语"预订""世界")。

请阅读https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

上的文档

还要注意Elasticsearch如何处理数组:https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html

答案 1 :(得分:1)

在这种情况下,字段名称是fields.title而不是标题。

尝试:

GET catalog/_search
{
    "fields" : "fields.title",
    "query":{
       "match" : {
          "fields.title":"book"
       }
     } 
}