天道酬勤,学无止境

elasticsearch

Applying Analyzer while using More Like This (mlt) in ElasticSearch

问题 我想在 ElasticSearch 中修改 More Like This 查询的默认分析器,以便忽略停用词(最好不定义它们)。 为了尝试这个,我使用explain功能构建了一个查询,我希望是停止分析器( Stop ),如下所示, {"search":{"size":1, "fields":["our_id"],"explain":true,"query":{ "mlt":{"analyzer": "Stop", "docs":[{"_id":"99999999"}], "fields":["text_for_matching"]}} }} 但是,MLT 似乎没有解析我的分析器(因为我可以使用我喜欢的任何东西并且没有错误或更改),因此我看到停止词仍然包含在根据explain的相似性计算中, "description": "weight(text_for_matching:the in 4961) [PerFieldSimilarity], result of:", "value": 0.013, 如何使用分析器正确参数化 MLT,然后它会在我的搜索中忽略停用词吗? 或者我是否需要更改初始索引以获得我想要的行为? 谢谢你的帮助。 回答1 { "size": 1, "fields": [ "our_id" ], "explain": true, "query": { "mlt":

2022-07-11 09:49:24    分类:技术分享    elasticsearch

Update a property of the mapping on an existing index

问题 有这个映射: curl -XPUT 'http://myip:9200/test?pretty' -d' { "mappings": { "items": { "dynamic": "strict", "properties" : { "title" : { "type": "string" }, "body" : { "type": "string" }, "publish_up" : { "type": "date", "format" : "yyyy-MM-dd HH:mm:ss", "copy_to": "publication_date"}, "publication_date" : { "type": "date", "format" : "yyyy-MM-dd HH:mm:ss"}, }}}}' 我想将属性publication_date更改为"store" : "yes"以便使用字段返回值。 这是我的尝试: curl -X PUT 'http://myip:9200/test/_mapping/items?ignore_conflicts=true' -d '{ "items": { "properties": { "publication_date": { "type": "date", "format" : "yyyy-MM-dd HH:mm:ss",

2022-05-17 02:24:17    分类:技术分享    elasticsearch

ElasticSearch: compute arcDistance from nested field in Painless script

问题 我需要在 Painless 脚本中计算弧距,但在这种情况下还没有找到访问地理 API 的方法,即: 第一点作为参数传递给脚本 - 这意味着我只得到原始值第二点是从嵌套文档中读取的 - 这意味着我无法使用doc[myGeoField].value API 读取该字段 在这两种情况下,我都无法实例化org.elasticsearch.index.fielddata.ScriptDocValues.GeoPoints ,这将使我能够访问.arcDistance()方法。 我也无法使用在 Painless 中未列入白名单的org.elasticsearch.common.geo.GeoUtils类。 在脚本中计算弧距还有其他选择吗? 注意:由于此处无法解释的原因,我必须为此用例使用脚本 - 在查询/过滤器中执行此操作不是一种选择。 回答1 我用inner_hits解决了这个问题,请参见下面的查询: { "query": { "nested": { "path": "campi", "query": { "query_string": { "query": "*" } }, "inner_hits": { "script_fields": { "distanceInMeters": { "script": { "inline": "!doc['campi.location']

2022-05-16 15:38:21    分类:技术分享    elasticsearch   scripting   elasticsearch-painless

Custom sorting in elastic search

问题 我有一些带有完成建议的弹性搜索文档。 我搜索一些像 Stack 这样的值,结果按下面给出的顺序显示: 堆栈溢出堆栈溢出堆 StackOver 堆栈溢出 我希望结果按顺序显示: 堆 StackOver 堆栈溢出堆栈溢出堆栈溢出 即,完全匹配应该首先出现,而不是空格或特殊字符的结果。 TIA 回答1 这完全取决于您分析要查询的字符串的方式。 我建议您在同一个字符串字段上应用多个分析器。 以下是您想要自动完成/建议功能的“名称”字段的映射示例: "name": { "type": "string", "analyzer": "keyword_analyzer", "fields": { "name_ac": { "type": "string", "index_analyzer": "string_autocomplete_analyzer", "search_analyzer": "keyword_analyzer" } } } 在这里,keyword_analyzer 和 string_autocomplete_analyzer 是在您的索引设置中定义的分析器。 下面是一个例子: "keyword_analyzer": { "type": "custom", "filter": [ "lowercase" ], "tokenizer": "keyword" } "string

2022-05-16 07:07:07    分类:技术分享    elasticsearch

Return all documents from elasticsearch query

问题 我的问题特定于我正在使用的“gopkg.in/olivere/elastic.v2”包。 我正在尝试返回与我的查询匹配的所有文档: termQuery := elastic.NewTermQuery("item_id", item_id) searchResult, err := es.client.Search(). Index(index). Type(SegmentsType). // search segments type Query(termQuery). // specify the query Sort("time", true). // sort by "user" field, ascending From(0).Size(9). Pretty(true). // pretty print request and response JSON Do() // execute if err != nil { // Handle error return timeline, err } 问题是如果我将大小增加到很大,我会收到内部服务器错误。 如果我消除说明: From(0).Size(9). 然后使用默认值(10 个文档)。 我怎样才能退回所有文件? 回答1 使用滚动条来检索所有结果只是有点不同,为了简洁起见,我没有包括您可能需要的太多错误处理。 基本上

2022-05-16 04:52:04    分类:技术分享    elasticsearch   go

ElasticSearch: Sort aggregation key in case-insensitive and remain the case of the key

问题 我想从 car 中获得不同的 make 值,并且 make 值应该不区分大小写按升序排序。 我正在使用弹性搜索 2.4.4 版 映射颜色和制作字段 "color": { "type": "string", "fields": { "keyword": { "type": "string", "index": "not_analyzed" }, "lcsort": { "type": "string", "analyzer": "case_insensitive_sort" } } }, "make": { "type": "string", "fields": { "keyword": { "type": "string", "index": "not_analyzed" }, "lcsort": { "type": "string", "analyzer": "case_insensitive_sort" } } } 我在 case_insensitive_sort 分析器上的设置 "analysis": { "analyzer": { "case_insensitive_sort": { "filter": [ "lowercase" ], "tokenizer": "keyword" } } } 查询 1 { "size" : 0, "query" : { "bool"

2022-05-16 03:33:00    分类:技术分享    elasticsearch

How to pass ElasticSearch query to hadoop

问题 我正在开发一个允许在 Hadoop 上搜索的项目。 它的工作原理是首先将查询传递给 ES,然后将生成的 ID 传递回 SQL,如下所示: SELECT ... WHERE id in [1,24,383,2912,...] 当我们有 100 或 1000 个 id 要传回 SQL-on-Hadoop 时,这很有效,但如果我们有 100K 或 1M+ id 要传回,则效果不佳。 有哪些替代方法可以将结果集(id 列表?)从 ES 传递回 SQL? 回答1 将所有弹性搜索ID 插入到单独的表中,然后将其与源表连接。 例如 CREATE TABLE ELASTIC_SEARCH_ID(id INT); SELECT ... FROM SOURCE S JOIN ELASTIC_SEARCH_ID ES ON S.ID=ES.ID;

2022-05-16 02:34:03    分类:技术分享    sql   hadoop   elasticsearch   presto

How to create filebeat index pattern in kibana?

问题 回答1 如您链接的页面上所述,“要加载此模式,您可以使用为导入仪表板提供的脚本。” 因此,在您看到filebeat-*索引模式之前,您应该运行./scripts/import_dashboards工具,然后刷新页面。 这会将索引模式写入 Kibana 使用的.kibana索引。 对于通过 rpm 或 deb 安装的 Linux,命令为: /usr/share/filebeat/scripts/import_dashboards -es http://elasticsearch:9200 如果您使用的是 tar 或 zip 包,则该命令位于包的scripts目录中。 您可以通过转到Management -> Index Patterns来进一步管理或修改 Kibana 中的索引模式。

2022-05-15 20:24:10    分类:技术分享    elasticsearch   logstash   kibana   elastic-stack   filebeat

illegal_argument_exception: no mapping found for field

问题 我正在尝试遵循一些关于如何使用弹性搜索( version 12.1.0 )作为搜索引擎的教程。 现在,我正在尝试运行以下几行: function initMapping() { return elasticClient.indices.putMapping({ index: indexName, type: "document", body: { properties: { title: { type: "string" }, content: { type: "string" }, suggest: { type: "completion", analyzer: "simple", search_analyzer: "simple", payloads: true } } } }); } function addDocument(document) { return elasticClient.index({ index: indexName, type: "document", body: { title: document.title, content: document.content, suggest: { input: document.title.split(" "), output: document.title, payload: document

2022-05-15 15:39:37    分类:技术分享    javascript   node.js   elasticsearch

Elasticsearch - How to filter nested aggregation bucket?

问题 我正在尝试过滤嵌套聚合的存储桶。 映射: { "dev.directory.3" : { "mappings" : { "profile" : { "properties" : { "events" : { "type" : "nested", "properties" : { "id" : { "type" : "integer" }, "name" : { "type" : "string", "index" : "not_analyzed" }, } }, "title" : { "type" : "string" } } } } } } 指数数据: "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "dev.directory.3", "_type" : "profile", "_id" : "1", "_score" : 1.0, "_source" : { "title" : "Project manager", "events" : [ { "id" : 1, "name" : "Event A", }, { "id" : 2, "name" : "Event B", }, { "id" : 3, "name" : "Event C", }, { "id" : 4, "name"

2022-05-15 15:00:17    分类:技术分享    elasticsearch