为啥 ElasticSearch 没有找到我的术语
Posted
技术标签:
【中文标题】为啥 ElasticSearch 没有找到我的术语【英文标题】:Why ElasticSearch is not finding my term为什么 ElasticSearch 没有找到我的术语 【发布时间】:2011-06-26 05:51:53 【问题描述】:我刚刚安装并测试了弹性搜索,它看起来很棒,我需要知道一些我有配置文件的事情
elasticsearch.json
在config
目录中
"network" :
"host" : "127.0.0.1"
,
"index" :
"number_of_shards": 3,
"number_of_replicas": 1,
"refresh_interval" : "2s",
"analysis" :
"analyzer" :
"index_analyzer" :
"tokenizer" : "nGram",
"filter" : ["lowercase"]
,
"search_analyzer" :
"tokenizer" : "nGram",
"filter" : ["lowercase"]
,
"// you'll need lucene dep for this: filter" :
"snowball":
"type" : "snowball",
"language" : "English"
如果我搜索关键字,我插入了一个包含单词 searching
的文档
search
它说什么都没找到...
不会在索引之前停止,否则我错过了配置中的某些内容 ....
【问题讨论】:
你在搜索吗?文档是什么样的?$ curl -XPUT http://localhost:9200/twitter/tweet/1 -d ' "user": "kimchy", "post_date": "2009-11-15T13:12:00", "message": "Trying out searching teaching, so far so good?" '
curl -XGET localhost:9200/twitter/tweet/_search?q=message:search
【参考方案1】:
您的查询看起来如何?
您的配置看起来不太好。试试:
...
"index_analyzer" :
"tokenizer" : "nGram",
"filter" : ["lowercase", "snowball"]
,
"search_analyzer" :
"tokenizer" : "nGram",
"filter" : ["lowercase", "snowball"]
,
"filter" :
"snowball":
"type" : "snowball",
"language" : "English"
【讨论】:
【参考方案2】:我在覆盖“default_search”和“default_index”分析器时也遇到了麻烦。
这虽然有效。 如果需要,您可以添加“index_analyzer”以默认类型内具有未指定分析器的所有字符串字段。
curl -XDELETE localhost:9200/twitter
curl -XPOST localhost:9200/twitter -d '
"index":
"number_of_shards": 1,
"analysis":
"filter":
"snowball":
"type" : "snowball",
"language" : "English"
,
"analyzer": "a2" :
"type":"custom",
"tokenizer": "standard",
"filter": ["lowercase", "snowball"]
'
curl -XPUT localhost:9200/twitter/tweet/_mapping -d '
"tweet" :
"date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy"],
"properties" :
"user": "type":"string",
"message" : "type" : "string", "analyzer":"a2"
'
curl -XPUT http://localhost:9200/twitter/tweet/1 -d ' "user": "kimchy", "post_date": "2009-11-15T13:12:00", "message": "Trying out searching teaching, so far so good?" '
curl -XGET localhost:9200/twitter/tweet/_search?q=message:search
curl -XGET localhost:9200/twitter/tweet/_search?q=message:try
【讨论】:
以上是关于为啥 ElasticSearch 没有找到我的术语的主要内容,如果未能解决你的问题,请参考以下文章
具有高基数字段的 ElasticSearch 术语和基数性能
为啥使用 C#/ElasticSearch 进行此 NEST 通配符搜索没有返回任何文档?