相关疑难解决方法(0)

没有为字段找到映射以便在ElasticSearch中进行排序

SearchParseException如果发现某些文档不包含排序条件中使用的字段,则Elasticsearch会抛出一段时间解析查询.

SearchParseException:Parse Failure [找不到[price]的映射以便排序]

我怎样才能成功搜索这些文件,即使有些人遗漏了这些文件price

sorting mapping elasticsearch

103
推荐指数
3
解决办法
6万
查看次数

为什么ElasticSearch匹配查询返回所有结果?

我有以下ElasticSearch查询,我认为会返回电子邮件字段中的所有匹配项,它等于myemails@email.com

"query": {
  "bool": {
    "must": [
      {
        "match": {
          "email": "myemail@gmail.com"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

}

正在搜索的用户类型的映射如下:

    {
      "users": {
      "mappings": {
         "user": {
            "properties": {
               "email": {
                  "type": "string"
               },
               "name": {
                  "type": "string",
                  "fields": {
                     "raw": {
                        "type": "string",
                        "index": "not_analyzed"
                     }
                  }
               },
               "nickname": {
                  "type": "string"
               },
            }
         }
       }
   }  
     }
Run Code Online (Sandbox Code Playgroud)

以下是从ElasticSearch返回的结果示例

 [{
    "_index": "users",
    "_type": "user",
    "_id": "54b19c417dcc4fe40d728e2c",
    "_score": 0.23983537,
    "_source": {
    "email": "johnsmith@gmail.com",
    "name": "John Smith",
    "nickname": …
Run Code Online (Sandbox Code Playgroud)

node.js elasticsearch elasticsearch-plugin

6
推荐指数
1
解决办法
1718
查看次数

Elasticsearch 过滤多个术语,仅匹配结果,而不是其中任何一个

如何通过所有多术语搜索仅获得过滤后的匹配结果。我有这个示例表,其中 titleid 是映射 int 字段,personid 是关键字:

titleid:1,personid:a
titleid:3,personid:a

titleid:1,personid:b
titleid:2,personid:b

titleid:1,personid:c
titleid:5,personid:c
Run Code Online (Sandbox Code Playgroud)

预期结果是:

titleid:1
Run Code Online (Sandbox Code Playgroud)

使用如下示例查询:

{query:
    {bool:
    {filter:
            {must:[
                    {terms : {fields: {personid:[a,b,c]}}
                 ]
            }}}}
Run Code Online (Sandbox Code Playgroud)

我有以下结果:

titleid: 1,2,3,5
Run Code Online (Sandbox Code Playgroud)

也许这会有所帮助,我在 sql 中进行了查询并得到了预期的结果。我所做的是要求查询给出与搜索参数数量匹配的 titleid 总和。这只是为了更自我解释,这个想法是使用elasticsearch。

select titleid
from (
   select count(titleid) as title_count, titleid 
   from table1 
   where personid in ('a','b','c')
   group by titleid
) as vw 
where title_count = 3
Run Code Online (Sandbox Code Playgroud)

elasticsearch

1
推荐指数
1
解决办法
1万
查看次数